エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の24日目の記事です。 一... この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の24日目の記事です。 一昨日は抽象構文木を作り、昨日はシンボルテーブルを作成した。 これらを元にアセンブラのコードを吐き出せば、コンパイラは完成だ。 この最後の工程をコード生成という。 難しい話はないものの、説明すべき内容が多い。 まず第一部として制御フローのコード生成を説明し、第二部で計算関連を説明することにする。 第一部:制御フロー 制御フローというタイトルだが、拡大解釈して計算以外の全処理のコード生成をここで解説する。 抽象構文木をアセンブラのコードに変換する命令は main関数 内で // main関数内 // 空のシンボルテーブル TABLE tb[MAX_HASH_NUMBER]; // srcは抽象構文木の構造体 // fileは出力ファイルポインタ asm_program(f