.
This commit is contained in:
@@ -0,0 +1,447 @@
|
||||
@256
|
||||
D=A
|
||||
@SP
|
||||
M=D
|
||||
@MainLoopXYZRA
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@LCL
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@ARG
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@THIS
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@THAT
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@SP
|
||||
D=M
|
||||
@0
|
||||
D=D-A
|
||||
@5
|
||||
D=D-A
|
||||
@ARG
|
||||
M=D
|
||||
@SP
|
||||
D=M
|
||||
@LCL
|
||||
M=D
|
||||
@Sys.init
|
||||
0;JMP
|
||||
(MainLoopXYZRARA)
|
||||
//CALLFUNC
|
||||
(Sys.init)
|
||||
@4
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@Main.fibonacci2RA
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@LCL
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@ARG
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@THIS
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@THAT
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@SP
|
||||
D=M
|
||||
@1
|
||||
D=D-A
|
||||
@5
|
||||
D=D-A
|
||||
@ARG
|
||||
M=D
|
||||
@SP
|
||||
D=M
|
||||
@LCL
|
||||
M=D
|
||||
@Main.fibonacci
|
||||
0;JMP
|
||||
(Main.fibonacci2RA)
|
||||
//CALLFUNC
|
||||
(Sys.init$WHILE)
|
||||
//LABEL
|
||||
@Sys.init$WHILE
|
||||
0;JMP
|
||||
//GOTO
|
||||
(Main.fibonacci)
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push ARGUMENT
|
||||
@2
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
A=A-1
|
||||
D=M-D
|
||||
@TRUE0
|
||||
D;JLT
|
||||
@SP
|
||||
A=M
|
||||
A=A-1
|
||||
M=0
|
||||
@FALSE0
|
||||
0;JMP
|
||||
(TRUE0)
|
||||
@SP
|
||||
A=M
|
||||
A=A-1
|
||||
M=-1
|
||||
(FALSE0)
|
||||
//LT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@Main.fibonacci$IF_TRUE
|
||||
D;JNE
|
||||
//IFGOTO
|
||||
@Main.fibonacci$IF_FALSE
|
||||
0;JMP
|
||||
//GOTO
|
||||
(Main.fibonacci$IF_TRUE)
|
||||
//LABEL
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push ARGUMENT
|
||||
@LCL
|
||||
D=M
|
||||
@R13
|
||||
M=D
|
||||
@5
|
||||
D=A
|
||||
@R13
|
||||
D=M-D
|
||||
A=D
|
||||
D=M
|
||||
@R14
|
||||
M=D
|
||||
@SP
|
||||
A=M-1
|
||||
D=M
|
||||
@ARG
|
||||
A=M
|
||||
M=D
|
||||
@ARG
|
||||
D=M+1
|
||||
@SP
|
||||
M=D
|
||||
@R13
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@THAT
|
||||
M=D
|
||||
@R13
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@THIS
|
||||
M=D
|
||||
@R13
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@ARG
|
||||
M=D
|
||||
@R13
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@LCL
|
||||
M=D
|
||||
@R14
|
||||
A=M
|
||||
0;JMP
|
||||
//RETURN
|
||||
(Main.fibonacci$IF_FALSE)
|
||||
//LABEL
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push ARGUMENT
|
||||
@2
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
A=A-1
|
||||
M=M-D
|
||||
//SUB
|
||||
@Main.fibonacci0RA
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@LCL
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@ARG
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@THIS
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@THAT
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@SP
|
||||
D=M
|
||||
@1
|
||||
D=D-A
|
||||
@5
|
||||
D=D-A
|
||||
@ARG
|
||||
M=D
|
||||
@SP
|
||||
D=M
|
||||
@LCL
|
||||
M=D
|
||||
@Main.fibonacci
|
||||
0;JMP
|
||||
(Main.fibonacci0RA)
|
||||
//CALLFUNC
|
||||
@0
|
||||
D=A
|
||||
@ARG
|
||||
A=M+D
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push ARGUMENT
|
||||
@1
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
//push CONSTANT
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
A=A-1
|
||||
M=M-D
|
||||
//SUB
|
||||
@Main.fibonacci1RA
|
||||
D=A
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@LCL
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@ARG
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@THIS
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@THAT
|
||||
D=M
|
||||
@SP
|
||||
A=M
|
||||
M=D
|
||||
@SP
|
||||
M=M+1
|
||||
@SP
|
||||
D=M
|
||||
@1
|
||||
D=D-A
|
||||
@5
|
||||
D=D-A
|
||||
@ARG
|
||||
M=D
|
||||
@SP
|
||||
D=M
|
||||
@LCL
|
||||
M=D
|
||||
@Main.fibonacci
|
||||
0;JMP
|
||||
(Main.fibonacci1RA)
|
||||
//CALLFUNC
|
||||
@SP
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
A=A-1
|
||||
M=M+D
|
||||
//ADD
|
||||
@LCL
|
||||
D=M
|
||||
@R13
|
||||
M=D
|
||||
@5
|
||||
D=A
|
||||
@R13
|
||||
D=M-D
|
||||
A=D
|
||||
D=M
|
||||
@R14
|
||||
M=D
|
||||
@SP
|
||||
A=M-1
|
||||
D=M
|
||||
@ARG
|
||||
A=M
|
||||
M=D
|
||||
@ARG
|
||||
D=M+1
|
||||
@SP
|
||||
M=D
|
||||
@R13
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@THAT
|
||||
M=D
|
||||
@R13
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@THIS
|
||||
M=D
|
||||
@R13
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@ARG
|
||||
M=D
|
||||
@R13
|
||||
M=M-1
|
||||
A=M
|
||||
D=M
|
||||
@LCL
|
||||
M=D
|
||||
@R14
|
||||
A=M
|
||||
0;JMP
|
||||
//RETURN
|
||||
Reference in New Issue
Block a user