Nand2tetris Software Suite に含まれている昔懐しピンポンゲーム(Pong.asm)を作成したアセンブラでアセンブルしてみた。
Pong.asmはおおよそ28,000ステップあるが、問題無くアセンブルでき、CPU Emulatorで動作した。
次は、Virtual Machineを実装する予定。楽しいねー。
2015年6月23日火曜日
2015年6月21日日曜日
[コンピュータ開発][コンピュータシステムの理論と実践] OCamlでHack assemblerを実装(2)
前回からずいぶん間隔が空いたが、Hackアセンブラを拡張し、変数とジャンプ先にシンボルを利用できるようにした。
コードはこちら。
https://github.com/takeisa/ocaml-hack-assembler
サンプルコード Test.asm
1から100まで加算し、シンボルiで示すアドレスに計算結果を格納するプログラム。
シンボルテーブルを出力するようにしたので、実行すると以下のようになる。
コードはこちら。
https://github.com/takeisa/ocaml-hack-assembler
サンプルコード Test.asm
1から100まで加算し、シンボルiで示すアドレスに計算結果を格納するプログラム。
// sum from 1 to 100 @i M=1 // i=1 @sum M=0 // sum=0 (LOOP) // comment(space) @i D=M // D=i @100 D=D-A // D=i-100 @END D;JGT // if (i-100) > 0 then jump END @i D=M // D=i @sum M=D+M // sum=sum+i @i M=M+1 // i=i+1 @LOOP 0;JMP (END) @END 0;JMP
シンボルテーブルを出力するようにしたので、実行すると以下のようになる。
satoshi@jessie: ./assembler Test.asm === Symbol table === SP 0000 LCL 0001 ARG 0002 THIS 0003 THAT 0004 R00 0000 R01 0001 R02 0002 R03 0003 R04 0004 R05 0005 R06 0006 R07 0007 R08 0008 R09 0009 R10 000a R11 000b R12 000c R13 000d R14 000e R15 000f SCREEN 4000 KBD 6000 i 0010 sum 0011 LOOP 0004 END 0013
登録:
投稿 (Atom)