Assembler erweitert

This commit is contained in:
Sven Riwoldt
2024-04-04 19:37:49 +02:00
parent c7bc862c6f
commit efc4bd08a5
6 changed files with 326 additions and 22 deletions

View File

@@ -7,7 +7,7 @@
d. HACK-Code erzeugen
'''
import sys
import sys, os
from pathlib import Path
import re
from icecream import ic
@@ -90,26 +90,48 @@ def searchSymbols(asm):
ist Variable @x ein int, dann ohne @ in die Symboltable übernehmen
'''
#ic(asm)
i = 0
i = 16
for line in asm:
if line.startswith('@'):
ic (i, " ",line[1:])
#ic (i, " ",line[1:])
if line[1:].isdigit():
ic(line[1:], " ist ein int")
if line not in symboltable:
addtoSymboltable(line, int(line[1:]))
elif line not in symboltable:
#ic("Symbol nicht in Table")
addtoSymboltable(line, i)
i = i+1
def ciinstruction():
def addtoSymboltable(key,value):
ic(key, value)
symboltable[key]=value
def createAsmFile():
datename = os.path.splitext(os.path.basename(filename))[0]+".hack"
ic(datename)
f = open(datename,"w")
for line in asm:
if line in symboltable:
f.write('{0:016b}'.format(symboltable[line]) + "\n")
else:
#M=D
f.write('1111111111111111\n')
f.close()
if __name__ == "__main__":
#filename = sys.argv[1]
filename = "Rect.asm"
filename = sys.argv[1]
#filename = "Pong.asm"
symboltable = createSymboltable()
asm = load_asm_file(filename)
label_to_symboltable(asm)
searchSymbols(asm)
createAsmFile()
#print("Symtable = ",symboltable)