コンピューター理論、チョットデキルようになりたい

コンピュータサイエンスの学び直しです

学び直し42日目:8章 バーチャルマシン#2:実装、展望、プロジェクト(8章強引に終了)

記録

ダレてきてしまったので、いったんこの章を完了とする。

実装

要点としては、VM ではスタック構造をとるため、関数呼び出しやフロー制御(分岐やループ処理)が入れ子型の構造となってることを理解できればよさげ。

関数を呼び出した側の状態は呼び出した時点の状態が保持され、いったん呼び出された側に制御が移る。そこからさらに別の処理に渡ったり、処理を終えてもとの制御に return したりする。いずれにせよ、スタック構造がなせる業。

ブートストラップコード

コンピュータがブートアップしたときに、最初に実行されるコードのこと。ROM[0] からはじまるコードセグメント。今回の場合、「SP を 256 番地に設定する」&「初期化プログラムの Sys.init を呼ぶ」が、ブートストラップコードとなる。Sys.init はメインプログラムのメインプログラムを呼び出して無限ループに入る。

展望

VM から機械語への変換は見てきたので、あとは高水準言語から VM への変換を勉強すればおk。

今日の筋トレ

…ぜんぜんやってないぜ!