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)
