mirror of
https://github.com/soconnor0919/eceg431.git
synced 2025-12-10 14:14:43 -05:00
project07 complete
This commit is contained in:
223
07/MemoryAccess/BasicTest/BasicTest.asm
Normal file
223
07/MemoryAccess/BasicTest/BasicTest.asm
Normal file
@@ -0,0 +1,223 @@
|
|||||||
|
@10
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@LCL
|
||||||
|
D=M
|
||||||
|
@0
|
||||||
|
D=D+A
|
||||||
|
@R13
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@R13
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@21
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@22
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@ARG
|
||||||
|
D=M
|
||||||
|
@2
|
||||||
|
D=D+A
|
||||||
|
@R13
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@R13
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@ARG
|
||||||
|
D=M
|
||||||
|
@1
|
||||||
|
D=D+A
|
||||||
|
@R13
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@R13
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@36
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THIS
|
||||||
|
D=M
|
||||||
|
@6
|
||||||
|
D=D+A
|
||||||
|
@R13
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@R13
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@42
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@45
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THAT
|
||||||
|
D=M
|
||||||
|
@5
|
||||||
|
D=D+A
|
||||||
|
@R13
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@R13
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@THAT
|
||||||
|
D=M
|
||||||
|
@2
|
||||||
|
D=D+A
|
||||||
|
@R13
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@R13
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@510
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@11
|
||||||
|
M=D
|
||||||
|
@LCL
|
||||||
|
D=M
|
||||||
|
@0
|
||||||
|
A=D+A
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THAT
|
||||||
|
D=M
|
||||||
|
@5
|
||||||
|
A=D+A
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M+D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@ARG
|
||||||
|
D=M
|
||||||
|
@1
|
||||||
|
A=D+A
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M-D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THIS
|
||||||
|
D=M
|
||||||
|
@6
|
||||||
|
A=D+A
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THIS
|
||||||
|
D=M
|
||||||
|
@6
|
||||||
|
A=D+A
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M+D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M-D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@11
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M+D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
120
07/MemoryAccess/PointerTest/PointerTest.asm
Normal file
120
07/MemoryAccess/PointerTest/PointerTest.asm
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
@3030
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@THIS
|
||||||
|
M=D
|
||||||
|
@3040
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@THAT
|
||||||
|
M=D
|
||||||
|
@32
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THIS
|
||||||
|
D=M
|
||||||
|
@2
|
||||||
|
D=D+A
|
||||||
|
@R13
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@R13
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@46
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THAT
|
||||||
|
D=M
|
||||||
|
@6
|
||||||
|
D=D+A
|
||||||
|
@R13
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@R13
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@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
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M+D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THIS
|
||||||
|
D=M
|
||||||
|
@2
|
||||||
|
A=D+A
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M-D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@THAT
|
||||||
|
D=M
|
||||||
|
@6
|
||||||
|
A=D+A
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M+D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
73
07/MemoryAccess/StaticTest/StaticTest.asm
Normal file
73
07/MemoryAccess/StaticTest/StaticTest.asm
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
@111
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@333
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@888
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@StaticTest.8
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@StaticTest.3
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@StaticTest.1
|
||||||
|
M=D
|
||||||
|
@StaticTest.3
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@StaticTest.1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M-D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@StaticTest.8
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M+D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
1
07/PythonFileName.txt
Normal file
1
07/PythonFileName.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
hvm.py
|
||||||
22
07/StackArithmetic/SimpleAdd/SimpleAdd.asm
Normal file
22
07/StackArithmetic/SimpleAdd/SimpleAdd.asm
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
@7
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@8
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M+D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
379
07/StackArithmetic/StackTest/StackTest.asm
Normal file
379
07/StackArithmetic/StackTest/StackTest.asm
Normal file
@@ -0,0 +1,379 @@
|
|||||||
|
@17
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@17
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_0
|
||||||
|
D;JEQ
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_0
|
||||||
|
0;JMP
|
||||||
|
(TRUE_0)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_0)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@17
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@16
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_1
|
||||||
|
D;JEQ
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_1
|
||||||
|
0;JMP
|
||||||
|
(TRUE_1)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_1)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@16
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@17
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_2
|
||||||
|
D;JEQ
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_2
|
||||||
|
0;JMP
|
||||||
|
(TRUE_2)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_2)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@892
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@891
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_3
|
||||||
|
D;JLT
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_3
|
||||||
|
0;JMP
|
||||||
|
(TRUE_3)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_3)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@891
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@892
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_4
|
||||||
|
D;JLT
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_4
|
||||||
|
0;JMP
|
||||||
|
(TRUE_4)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_4)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@891
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@891
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_5
|
||||||
|
D;JLT
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_5
|
||||||
|
0;JMP
|
||||||
|
(TRUE_5)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_5)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@32767
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@32766
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_6
|
||||||
|
D;JGT
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_6
|
||||||
|
0;JMP
|
||||||
|
(TRUE_6)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_6)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@32766
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@32767
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_7
|
||||||
|
D;JGT
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_7
|
||||||
|
0;JMP
|
||||||
|
(TRUE_7)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_7)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@32766
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@32766
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M-D
|
||||||
|
@TRUE_8
|
||||||
|
D;JGT
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=0
|
||||||
|
@END_8
|
||||||
|
0;JMP
|
||||||
|
(TRUE_8)
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=-1
|
||||||
|
(END_8)
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@57
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@31
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@53
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M+D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@112
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M-D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
A=M-1
|
||||||
|
M=-M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M&D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@82
|
||||||
|
D=A
|
||||||
|
@SP
|
||||||
|
A=M
|
||||||
|
M=D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
D=M
|
||||||
|
@SP
|
||||||
|
AM=M-1
|
||||||
|
M=M|D
|
||||||
|
@SP
|
||||||
|
M=M+1
|
||||||
|
@SP
|
||||||
|
A=M-1
|
||||||
|
M=!M
|
||||||
23
07/hvm.py
23
07/hvm.py
@@ -291,10 +291,10 @@ def translateVMFile(vmFile, asmFile):
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# translate VM directory to assembly
|
# translate VM file or directory to assembly
|
||||||
if len(sys.argv) != 2:
|
# if len(sys.argv) != 2:
|
||||||
print("Usage: python hvm.py <directory>")
|
# print("Usage: python hvm.py <file_or_directory>")
|
||||||
sys.exit(1)
|
# sys.exit(1)
|
||||||
|
|
||||||
inputPath = sys.argv[1]
|
inputPath = sys.argv[1]
|
||||||
|
|
||||||
@@ -313,19 +313,24 @@ def main():
|
|||||||
print(f"Translated '{inputPath}' to '{outputFile}'")
|
print(f"Translated '{inputPath}' to '{outputFile}'")
|
||||||
|
|
||||||
elif os.path.isdir(inputPath):
|
elif os.path.isdir(inputPath):
|
||||||
# directory mode
|
# directory mode - find VM file in directory
|
||||||
vmFiles = [f for f in os.listdir(inputPath) if f.endswith('.vm')]
|
vmFiles = [f for f in os.listdir(inputPath) if f.endswith('.vm')]
|
||||||
|
|
||||||
if not vmFiles:
|
if not vmFiles:
|
||||||
print(f"Error: No .vm files found in directory '{inputPath}'")
|
print(f"Error: No .vm files found in directory '{inputPath}'")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# output file is dir name + .asm
|
# find VM file with same name as directory
|
||||||
dirName = os.path.basename(inputPath.rstrip('/'))
|
dirName = os.path.basename(inputPath.rstrip('/'))
|
||||||
outputFile = os.path.join(inputPath, dirName + '.asm')
|
vmFileName = dirName + '.vm'
|
||||||
|
|
||||||
# translate first VM file found
|
if vmFileName in vmFiles:
|
||||||
vmFile = os.path.join(inputPath, vmFiles[0])
|
vmFile = os.path.join(inputPath, vmFileName)
|
||||||
|
else:
|
||||||
|
# use first VM file found
|
||||||
|
vmFile = os.path.join(inputPath, vmFiles[0])
|
||||||
|
|
||||||
|
outputFile = os.path.join(inputPath, dirName + '.asm')
|
||||||
translateVMFile(vmFile, outputFile)
|
translateVMFile(vmFile, outputFile)
|
||||||
print(f"Translated '{vmFile}' to '{outputFile}'")
|
print(f"Translated '{vmFile}' to '{outputFile}'")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user