コンピュータシステムの理論と実装 バーチャルマシン#1
TOP > てきとうにこらむ > ゲーム作りとプログラミング日記 > コンピュータシステムの理論と実装 バーチャルマシン#1
GitHubのリポジトリはこちら: https://github.com/youkidearitai/nand2tetris
コンピュータシステムの理論と実装
7章の実装が完了した。7章はvm(バーチャルマシン)の前半部分で、基本的なスタックマシンを作成する。
https://www.oreilly.co.jp/books/9784873117126/
vmファイルからアセンブリを吐き出すソフトウェアを書く。プログラミング言語は要件を満たせればなんでもよく、今回はPythonを使った。
解決に5年くらいかかった
出来上がってしまうとなんのことはないハズのものが、解決に5年くらいかかってしまった。当時なんでこんなに悩んでいたのかは最早わからなくて、復帰したときに出来上がっているところ、壊れているところを観察して、修正を繰り返したらただただなんか動いたという感じである。
また、Pythonのバージョンも2は最早古くて使い物にならず、出来上がったときにはPython 3.8(最新は3.9)を使っている。バージョンの変更も必要だったのでアセンブラの部分もふくめて修正しておいた。
Python 2から3への変更
一点、Python3に変更すると問題が発生する。というのは、コンピュータシステムの理論と実装では、parserという名前のモジュールをつくることになっているけども、Python3からはparserというモジュールが標準であるので、一見すると意味不明なエラーを吐き出して終了するはずだ。
解決方法は色々あると思うけど、簡単なのは作るparserモジュールの名前を変更すること。私はvm_parser.pyに変更した。
感想
出来上がったときはそりゃ嬉しかったですね。しかし、どうしてこんなに時間がかかってしまうほど迷宮に入り込んで、あっさり解決できたのか…
一覧
- コンピュータシステムの理論と実装 ブール論理
- コンピュータシステムの理論と実装 ブール論理のつづき
- コンピュータシステムの理論と実装 ALUの実装
- コンピュータシステムの理論と実装 レジスタとメモリとカウンタ
- コンピュータシステムの理論と実装 機械語
- コンピュータシステムの理論と実装 CPU
- コンピュータシステムの理論と実装 コンピュータそのもの
- コンピュータシステムの理論と実装 アセンブラ
- コンピュータシステムの理論と実装 バーチャルマシン#1
- コンピュータシステムの理論と実装 バーチャルマシン#2