コンパイラ
コンパイラの内部で、ソース言語にもCPUにも依存しない中間表現(IR)を使う主な利点はどれか。
- A中間表現を使うと、ソースコードを読まずにコンパイルできるようになるから
- B中間表現はCPUがそのまま実行できるので、機械語の生成が不要になるから
- C言語ごとの前半とCPUごとの後半を分けられ、最適化も共通に使えるから
答えと解説を見る
正解:C. 言語ごとの前半とCPUごとの後半を分けられ、最適化も共通に使えるから
M種類の言語とN種類のCPUに対応するとき、組み合わせごとにコンパイラを作るとM×N個必要ですが、共通の中間表現を介せば、言語から中間表現への前半(フロントエンド)M個と、中間表現からCPUへの後半(バックエンド)N個で済みます。最適化の多くも中間表現の上で一度作れば、すべての言語とCPUで使えます。中間表現はCPUがそのまま実行できるものではなく、最後に機械語へ変換する必要があります。
- A. ソースコードは必ず読む必要があります。
- B. 中間表現はCPUが直接実行できず、機械語への変換が必要です。
- C. 正しい。前半と後半を分け、最適化を共通化できます。