コードはこちら。
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
0 件のコメント:
コメントを投稿