てきとうなさいと べぇたばん

コンピュータシステムの理論と実装 バーチャルマシン#1

5年位悩んで進まなかったので、7章を境目に左側だけボロボロになったような気がする BasicTestが通った。すごく嬉しいですね

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に変更した。

感想

出来上がったときはそりゃ嬉しかったですね。しかし、どうしてこんなに時間がかかってしまうほど迷宮に入り込んで、あっさり解決できたのか…

一覧