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