nand2tetris-rs

I try doing [Nand to Tetris](https://www.nand2tetris.org/) in Rust.


Project maintained by KBone12 Hosted on GitHub Pages — Theme by mattgraham

トップページ

Assembler

前回で外部入出力をしてから Project 6 に進むと書きましたが、機械語を書きながらテストをするのは大変なので、先にアセンブラを作ることにしました。

Parser

色々と実装に悩みましたが、結局 A-instruction とラベルに関しては空白を除いた文頭で判断し、 C-instruction に対しては正規表現を用いて実装しました。比較的愚直に実装した結果、かなりごちゃごちゃしてしまいました。ソースコードは長くなりすぎるので省略します。

SymbolTable

symbol をまずそのままに instruction 単位に分割してその後 symbol を数値に変換していくために、 Parser で生成する方針にしました。ほとんど HashMap そのままですが、ラベルと変数とで処理を分けています。ソースコードは長くなるので省略します。

release モードじゃないと特に Pong.asm をアセンブルするときは時間がかかってしまいますが、とりあえず実装できました。これでテストするのも楽になったので、今度こそ外部入出力に手を付けていきます。