「コンピュータシステムの理論と実装」を読んでメモを書いていきます。
前回は↓
メモ
コンパイル
中間コード
VM言語
- 算術操作, メモリ操作, プログラムフロー, サブルーチン呼び出しなどを提供する
- 今回実装するVMの仕様
- スタックマシンを使ってVM言語におけるデータを格納する方法を採用
- functionと呼ばれるプログラムユニットでまとめられる
- 16ビットのデータ型
- 4種類のコマンドで構成される
- 算術コマンド
- スタック上で算術演算と論理演算を行う
- add, sub, and, or, など
- メモリアクセスコマンド
- スタックとメモリ領域間でデータの転送を行なう
- VMコマンドを実行すると裏でスタックとヒープを暗黙的に利用する
- pop(pop) segment indexという形式
- segmentは以下8つ
- local
- argument
- pointer
- this
- that
- constant
- temp
- static
- プログラムフローコマンド
- 分岐処理を行う
- 関数呼び出しコマンド
- 関数呼び出しとリターンを行う
- 算術コマンド
- コマンド構成
実装
実際にKotlinで実装したソースコードは以下
次章はこちら