「コンピュータシステムの理論と実装」を読んだメモを書いていきます。
前回は↓
メモ
シンボルテーブル
- シンボルとメモリアドレスの組が書かれたテーブル
アセンブリ言語
シンボル
- メモリアドレスを参照する記号
goto 7
をgoto weight
と表記した場合weight
はシンボルとなる- 変数やラベルとして利用する
- 変数やラベルが作られた段階でシンボルテーブルに変換情報を追加
- Hackでは
@sum
や(LOOP)
のように使われている
アセンブラ
実装
自分の好きな言語で書けるようなので、Kotlinでアセンブラを実装しました。 ソースコードは以下。 github.com
感想
- Kotlin(Java)のファイル入出力周りの実装は毎回ググらないと思い出せないので大変だった(Kotlinのファイル入出力のきれいな書きかたを知りたい)
- Kotlinのsubstring系のメソッドがとても便利なことを知った(substringBefore, substringAfter, substringBeforeLastなど)
- シンボルテーブルの作成を行なう際に(Xxx)のシンボルのアドレスの処理でハマってしまった(疑似コードはバイナリを生成しないので、疑似コードの行はROMアドレスにカウントしないことを忘れていた)
- 書籍に書かれていたHackの仕様は条件分岐が多かったりmutableな設計になっているので、immutableに直してみると設計の練習にもなりそう
次章はこちら