- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C言语を用いたマシン非依存な JITコンパイラ作成フレーム .ppt
C言語を用いたマシン非依存なJITコンパイラ作成フレームワーク 栗田洋輔 千葉滋 東京工業大学 従来のJITコンパイラの開発と問題点 本格的なJITコンパイラ プラットフォーム依存の中間表現を作成し、それを機械語に変換 移植性の問題 マシンごとにプラットフォーム依存の中間表現を作成 実装の容易性の問題 高い開発スキルが必要 バイトコードから中間表現への変換 中間表現から機械語への変換 本研究の目的 JIT コンパイラ作成を容易にするフレームワーク 移植性が高い 短いコンパイル時間でそこそこの品質のコードを生成 そこそこの最適化 本質的なオーバーヘッドを除去することで高速化を行う 広い範囲のインタープリターに適用できる汎用的な手法 本質的なオーバーヘッド バイトコードインタープリター 次の命令をフェッチしてデコードするコスト バイトコードのオペランドをメモリからロードするコスト 抽象構文木のインタープリター 抽象構文木を巡回してノードをデコードするコスト 命令をフェッチ?デコードするオーバーヘッド (1/2) 命令ポインタ(ip)のインクリメントとメモリからのフェッチ 命令をフェッチ?デコードするオーバーヘッド (2/2) バイトコードのデコード switchによる条件分岐で実装 命令をフェッチ?デコードするオーバーヘッドの除去 高速化を達成 フェッチ?デコード部分を削除 本体部分のみを並べる バイトコードのオペランドをメモリからロードするコストの削減 バイトコードのオペランドをメモリからロード オペランドの値が既知の場合には不必要 JIT コンパイラ?フレームワークの提案 プラットフォーム独立な中間表現 中間表現から機械語への変換はフレームワークが担当 高い移植性を実現(フレームワーク自体の移植は必要) テンプレート 中間表現の各ノードに対応する機械語のひな形 中間表現のセマンティクスを与える テンプレートの書き方 インタープリターの主ループそのもの 記述は容易 一部の命令は、テンプレート用に書き換えが必要 命令ポインタ (IP) を使っている場合 生成される機械語に IP は含められない IP でオペランド(即値)を取得する HOLEマクロを利用 gccインラインアセンブリに展開 機械語生成時に即値を挿入 IP で分岐先を決定する 分岐命令にはテンプレート不要 プラットフォーム独立な中間表現 各ノード バイトコード命令(あるいは式)に対応 中間表現への変換は容易 属性 テンプレートのどの部分を使って機械語を生成するか HOLE に挿入する即値の値 中間表現への変換は容易 インタープリタの制御構造を流用可能 appendCmpnt BlockCmpntをリストの末尾に追加 addHoleInfo Holeに埋め込む値を設定 フレームワークによるコード生成 入力:中間表現、出力:機械語 コンパイル済みテンプレートの逆アセンブル情報を利用する 機械語生成の流れ 1.中間表現で指定されたコンパイル済みテンプレートを、最後のjmp命令やret命令を除きコピー 2. 相対アドレスを用いた部分をコードが移動した分だけずらす 3. 中間表現で指定された即値命令に指定された即値を埋め込む 4. バイトコードの分岐命令は機械語の分岐命令に変換 バイトコードの分岐命令の処理 分岐先バイトコードのアドレスが入った中間表現を作る 機械語の分岐命令に変換 バイトコードのアドレスを機械語のアドレスへフレームワークが変換 中間表現での最適化 中間表現のノードの並べ替え 複数ノードを最適化された1ノードへ置換 例 定数の畳み込み 抽象構文木インタープリターの場合 抽象構文木を直接解釈するインタープリター switch文がオーバーヘッド バイトコードインタープリターと同様 eval 関数が再帰呼び出し 入れ子の関数呼び出しの中間表現 中間表現を木構造に 入れ子で呼ばれる関数を表すノードを木構造の子ノードに 入れ子の関数呼び出しのテンプレート 引数なしのvoid関数がテンプレート 値の受け渡しはグローバル変数で LABEL マクロ テンプレートの内部に他のテンプレートを挿入可能 フレームワークのマシン非依存性 JITコンパイラの作成者 マシンアーキテクチャを意識しない 中間表現はプラットフォーム独立 フレームワーク自体 マシンアーキテクチャ固有の実装 コンパイル済みテンプレートの機械語の解析 インラインアセンブリに展開されるマクロ 即値命令に定数を埋め込む方法 機械語の分岐命令 相対アドレスの調整 gccが必要 gccインラインアセンブリを使用 予備的な実験 関連研究 Cコンパイラが生成した機械語を利用する研究 ErtlらのJITコンパイラの移植
您可能关注的文档
- 2015年江苏省卫生计生监督技能竞赛活动方案.doc
- 2015考试标准的新变化与应对策略.ppt
- 2016年X月月报.ppt
- 2016年上海工程技术大学专升本微观经济学考试大纲(点 .doc
- 2016年春季学校卫生监督方案.doc
- 21世纪的教育发展方向.ppt
- A8协同管理软件产品白皮书.doc
- AlexNet介绍.ppt
- An Introduction to Proteomics - 生物探索-探索生物科技 .ppt
- Applied Mathematical Statistics - 发展历程.ppt
- Diapositiva 1 - 科学网—博客.ppt
- DNA遗传标记 - 医科大学网站.doc
- E-Views 简单な使い方.ppt
- EZonExam演示培训文档 - 中南大学图书馆-.ppt
- F-5无线电遥控帆船项目 - 苏州市航空运动和模型运动协会 .ppt
- Gamma-Ray Bursts - 国家自然科学基金会 首页.ppt
- Gaussian0ChemOffice2004新功能演示.ppt
- General - 物理学会.ppt
- gongGaoMingCheng - 银华基金欢迎您!.doc
- Grand titre de la pr233sentation - 巴州安全生产监督管理局.ppt
最近下载
- (完整版)《建筑给水排水及采暖工程施工质量验收规范》(GB50242-2002).docx
- 品牌活动线上活动方案策划.docx VIP
- TB 10308-2020 铁路电力、电力牵引供电工程施工安全技术规程(附条文).pdf VIP
- 2025年公路检测工程师《水运结构与地基》试题及答案(最新).docx VIP
- 自考公务员制度.ppt VIP
- 2025年-2025年中级银行从业资格之中级个人贷款真题精选附完整答案详解【名校卷】.docx VIP
- 食品安全培训课件模板.pptx VIP
- 房屋安全鉴定理论考试复习题及答案.doc VIP
- 人教版六年级上册数学《圆的认识》(作业设计课件).pptx VIP
- GB50367-2013 混凝土结构加固设计规范_7993.doc VIP
文档评论(0)