コード生成

更新日:

用語解説

コード生成は、意味解析済みの抽象構文木又は中間表現を、対象CPUの機械語、アセンブリ、仮想機械命令等の目的コードへ変換するコンパイラ工程です。

■ 試験で押さえるポイント

  • 演算を対象命令へ割り当てる命令選択、有限個のレジスタへ値を置くレジスタ割当て、命令順序決定、アドレス計算等を行います。

  • 対象CPUの命令セット、呼出規約、データ配置、エンディアン等へ依存するため、同じ中間表現から複数環境向けのバックエンドを作れます。

  • 生成結果は再配置可能なオブジェクトコードの場合があり、未解決の外部参照をリンカが解決して実行可能ファイルを作ります。

  • 最適化は生成前の中間表現又は生成時の機械依存段階でも行われますが、プログラムの観測可能な意味を変えてはいけません。

■ 選択肢での判断ポイント

中間表現→対象機械向け目的コードの工程で、命令選択とレジスタ割当てが代表処理です。リンクとの違いも押さえます。

例: 中間表現「t=a+b」を、aとbをレジスタへ読み、加算命令を実行し、結果をtの場所へ格納する対象CPU命令列に変換します。

音声で聞く

同じ分野の用語