大切なのはアウトプットとコミットメント。 忘備録てきなかんじです。
9cc 低レイヤ
半年ぶりぐらいにコンパイラ作成の続きをしているのですが、文字列リテラルを追加しようとしました。 コードの出力はできたのですが、実行してみると以下のエラーが表示されました。 ```text `gutter:false; /usr/bin/ld: /tmp/ccyB40...
9cc C 低レイヤ
[低レイヤを知りたい人のためのCコンパイラ作成入門](https://www.sigbus.info/compilerbook)を参考にしながらコンパイラを作成しています。 初めは変数はint固定で64ビットなのですが、32ビットにしようとしたらだいぶハマりました。 ...
コツコツ作成しているCコンパイラですが、return文が無いと色々不便なのでreturn文を追加しました。 return文はそこに来たら関数の最後にジャンプすれば良いので、jmp命令でプロローグの直前にジャンプすればOKです。 jmpする前にraxに値を入れておき...
関数定義に対応するの大変でした。 初めは今までと同じNodeとして定義していたのですが、それだとうまくいかず プログラムを関数の集まりと定義する事にして関数定義に対応しました。 再帰呼び出しもちゃんとできているのでいったん良しです。 生成規則は以下のような感じに...
関数呼び出しに対応するの大変でした。 正しいかわかりませんが、生成規則を以下のように定義しました。 (試行錯誤のすえ以下のようになったのですが...) ``` `gutter:true; program: stmt program program: ε st...
最近のマイブーム9ccコンパイラ作成 前回単語変数対応したのですが、複数文字のローカル変数対応は宿題になっていました。 ヒントとしては、連想配列を使うと言う事で、連想配列の作成方法は方法が載っていました。 こんな感じか?というのを記事にします。 連想配列...
最近コンパイラを育てるのが密かな楽しみになっています。 Ruiさんが公開してくれている[低レイヤを知りたい人のためのCコンパイラ作成入門](https://www.sigbus.info/compilerbook)を読みながら、コツコツ作成していっています。 大学...