BOOK SEARCH
内容紹介
初心者から作成者までを対象。コンパイラの技術を集積し,新しいコンパイラの研究と開発を容易にすることを目的として開発されたCOINSが実際にどのように実現されているかを説明し,実用的なコンパイラを作成する手法を丁寧に解説。
編集部から
目次
I コンパイラの概要
1. コンパイラの一般的な構造
1.1 字句解析
1.2 構文解析
1.3 意味解析
1.4 中間表現
1.5 各種解析と最適化
1.6 目的コードの生成
2. フロントエンド
2.1 字句解析の方法
2.2 構文解析の方法
3. 最適化
3.1 制御とデータの流れの解析
3.2 SSA最適化とは
3.3 SSA形式
3.4 SSA形式への変換
3.5 SSA形式からの逆変換
3.6 SSA形式最適化
3.7 コード移動に基づく冗長除去
4. バックエンド
4.1 命令選択
4.2 レジスタ割付け
4.3 命令スケジューリングとソフトウェア・パイプライニング
II コンパイラ・インフラストラクチャCOINS
5. COINSの構成と特徴
5.1 COINSの特徴
6. 中間表現
6.1 高水準中間表現HIR
6.2 低水準中間表現LIR
7. COINSでの最適化
7.1 HIR最適化
7.2 並列化}
7.3 SSA最適化
8. COINSのバックエンド
8.1 バックエンドの概要
8.2 マシン記述による命令選択
8.3 命令スケジューリングとソフトウェア・パイプライニング
8.4 バックエンドの機能拡張の容易性
9. 性能評価
9.1 SPECベンチマークでの評価
9.2 小さなプログラムによる評価
10. COINSを使ってみる
10.1 Cコンパイラとして使う
10.2 FORTRANコンパイラとして使う
10.3 最適化の効果を調べる
10.4 コードの生成過程を調べる
11. 簡単なコンパイラを作ってみる
11.1 コンパイラ作成の例題用C0言語の文法
11.2 JavaCCを使ったC0フロントエンド
11.3 C0バックエンド用のSPARC0マシン記述
12. マシン記述tmdを書いてみる
12.1 tmd記述とバックエンドの各フェーズの関係
12.2 インテルx86の64ビットモード
12.3 HIR用のマシン記述
12.4 レジスタ記述
12.5 定数による掛算/割算
12.6 関数呼び出しのコード生成
12.7 可変引数関数のコード生成
12.8 末尾再帰の関数呼び出しのJUMP命令化
12.9 特殊命令のコード生成
あとがき
文献
索引