自作コンパイラ開発メモ(2020/11/20)

低レイヤを知りたい人のための C コンパイラ作成入門を読んでコンパイラ自作してる時の作業記録です。

対象箇所

for 文に対応するアセンブリを出力できるようにしました。

実装

  • キーワードforを解析しトークン化できるようにした。
  • forのノードを検知してアセンブリとして出力できるようにした。

メモ

for 文を c で表現すると下記のようになる。

再設定式がブロックを抜ける直前に実行されていることがわかった。

// A:初期化式
// B:条件式
// C:再設定式
// D:真文
A;
begin:
if(B==0){
  goto end;
}
D;
C;
goto begin;
end: