|
徹底的なジェネレータの使用
モジュール構造
- コンパイラ開発者の知識をモジュール化
- 独立したモジュール開発
- 部品の再利用
その利点
- Time to marketの短縮
- 開発費・保守費の低減
|
|
|
|
|
CoSyにはBegと呼ばれるCode Generatorを生成するツールが含まれています。
BegはCGD(Code Generator Description)ファイルを基にCode Generatorを生成していきます。
CGDファイルはコンパイラ開発者によって作成され、ターゲットアーキテクチャの情報、例えばレジスタやプロセッサの構成、また各命令のパターンマッチングの定義、更には各命令のスケジューリングを行うための情報が含まれています。
|
|
|
- レジスタの依存関係、命令間のレイテンシーを考慮に入れた命令のスケジューリングを行うことが可能です。
- プロセッサユニットの複数化にすばやく対応でき、命令のパラレル化も可能です。
- 特別な処理をを固有の命令としてスケジューリングに加えることができます。
|
|
 |
- Constant folding
- 定数の畳み込みともいわれ、定数計算をコンパイル時に実行してしまう最適化アルゴリズム
- Algebraic simplification
- Copy/constant propagation
- Strength reduction
- よりコストの低い方法で計算を置き換える最適化アルゴリズム
- Dead code elimination
- 実行されることのない命令を削除する最適化アルゴリズム
- Common subexpression elimination
- 異なる形でものでも同じ値を持つ式を何回も計算せずに済むようにする為、同じ値を持つ式を置き換える最適化アルゴリズム
- Function inlining, intrinsics
- 関数を展開し、関数呼び出しのオーバーヘッドを無くすアルゴリズム
- Software pipelining
- Loop unrolling, fusion, etc.
- Loop unrolling:ループ内部を展開する最適化アルゴリズム
- Loop fusion:複数のループを一つのループに変換する最適化アルゴリズム
- Loop invariant code motion
- Tail recursion elimination
- 再起呼び出しをジャンプ命令に変換する最適化アルゴリズム
- Leaf procedure optimization
- leaf procedureを識別し、スタックの割り当てを省く最適化アルゴリズム
|
|
|