コンパイラ

クロスコンパイラの説明として正しいものはどれか。

  1. A2つのプログラミング言語を、1つの新しい言語に混ぜ合わせるコンパイラ
  2. B動かすコンピュータとは別のCPU向けの機械語を生成するコンパイラ
  3. C複数のコンパイラの出力を比べて、最も速いものを選ぶ道具
答えと解説を見る

正解:B. 動かすコンピュータとは別のCPU向けの機械語を生成するコンパイラ

クロスコンパイラは、例えばx86のパソコンの上で動きながら、ArmやRISC-Vのマイコン向けの機械語を生成するコンパイラです。組込み機器のように、対象の機器でコンパイラを動かすには性能やメモリが足りない場合に欠かせません。生成した機械語は、対象の機器に書き込んだり、その機器を模擬するエミュレータで動かしたりして確かめます。言語を混ぜ合わせたり、複数のコンパイラの結果を比べたりする道具ではありません。

  • A. 言語を混ぜ合わせるコンパイラではありません。
  • B. 正しい。別の種類のCPU向けに機械語を生成します。
  • C. 結果を比べる道具ではありません。
この分野を解く 分野ページへ

コンパイラのほかの問題

  1. 最適化をかけてコンパイルしたプログラムをデバッガで調べると、一部の変数の値が「表示できない」となることがある。主な理由はどれか。
  2. 上の関数に、定数伝播・定数畳み込み・不要コードの削除を十分に行ったとき、関数が返す値と残るコードとして正しいものはどれか。
  3. コンパイラの字句解析の役割として正しいものはどれか。
  4. コンパイラの構文解析で行うこととして正しいものはどれか。
  5. コンパイラの意味解析で見つかる誤りの例として最も適切なものはどれか。