Title:言語プロセッサ
アセンブラ | アセンブリ言語を機械語に翻訳する。 |
コンパイラ | 高水準言語を機械語の目的プログラムを生成する。 |
インタプリタ | その都度、翻訳しながら実行する。 |
プリプロセッサ | 別の高水準言語に変換。 |
セルフコンパイラ | 現在のコンピュータの目的プログラムを生成する。 |
クロスコンパイラ | 異なるコンピュータの… |
その他の言語プロセッサ | |
ジェネレータ(生成系) | プログラム生成 |
シミュレータ(実行系) | 他のコンピュータ用のプログラムの命令を解読しながら実行する言語プロセッサ |
エミュレータ | シミュレータをするハードウェアを言う。 |
コンパイラの処理手順
字句解析 | |
構文解析 | 文法エラー |
意味解析 | 逆ポーランド、中間コード |
最適化 | |
コード生成 | 目的プログラムとして出力するコードを生成する。 |
コンパイラの最適化手法
実行速度からみた最適化 | ・べき乗は乗算、乗算は加算に変換する。 |
・終始更新されることがない変数は、定数で置き換える。 | |
・関数をそれを呼び出す本体に組み込み、関数の呼出し時間を節約する。(関数のインライン展開) | |
・ループ中で値の変わらない式は、ループの外に出す。 | |
・ループアンローリング(ループ展開) | |
コードサイズからみた最適化 | ・プログラムの冗長部分を排除する。 |
・変数の初期値や定数に共通部分があれば、それをまとめる。 | |
実行速度およびコードサイズからみた最適化 | ・変数をレジスタに割り当てる。 |
定数の畳み込み。 | |
不要な演算を書応力する。 | |
リンク(連携編集) | make |
コンパイル指示ファイル(効率化) |