mirror of
https://github.com/soconnor0919/eceg431.git
synced 2025-12-10 06:04: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
|
||||
21
07/hvm.py
21
07/hvm.py
@@ -291,10 +291,10 @@ def translateVMFile(vmFile, asmFile):
|
||||
|
||||
|
||||
def main():
|
||||
# translate VM directory to assembly
|
||||
if len(sys.argv) != 2:
|
||||
print("Usage: python hvm.py <directory>")
|
||||
sys.exit(1)
|
||||
# translate VM file or directory to assembly
|
||||
# if len(sys.argv) != 2:
|
||||
# print("Usage: python hvm.py <file_or_directory>")
|
||||
# sys.exit(1)
|
||||
|
||||
inputPath = sys.argv[1]
|
||||
|
||||
@@ -313,19 +313,24 @@ def main():
|
||||
print(f"Translated '{inputPath}' to '{outputFile}'")
|
||||
|
||||
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')]
|
||||
|
||||
if not vmFiles:
|
||||
print(f"Error: No .vm files found in directory '{inputPath}'")
|
||||
sys.exit(1)
|
||||
|
||||
# output file is dir name + .asm
|
||||
# find VM file with same name as directory
|
||||
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, vmFileName)
|
||||
else:
|
||||
# use first VM file found
|
||||
vmFile = os.path.join(inputPath, vmFiles[0])
|
||||
|
||||
outputFile = os.path.join(inputPath, dirName + '.asm')
|
||||
translateVMFile(vmFile, outputFile)
|
||||
print(f"Translated '{vmFile}' to '{outputFile}'")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user