diff options
Diffstat (limited to 'nandgame/assembler/assembler_main .py')
| -rw-r--r-- | nandgame/assembler/assembler_main .py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/nandgame/assembler/assembler_main .py b/nandgame/assembler/assembler_main .py new file mode 100644 index 0000000..f77d07a --- /dev/null +++ b/nandgame/assembler/assembler_main .py @@ -0,0 +1,28 @@ +import sys + +#pywrong: THIS IS A FUCKING EXECUTABLE! LEAVE ME THE FUCK ALONE. +from py_nand_ass import parser_types as pt # pyright: ignore[reportImplicitRelativeImport] +from py_nand_ass.parser import parser # pyright: ignore[reportImplicitRelativeImport] +from py_nand_ass import assembler as ass # pyright: ignore[reportImplicitRelativeImport] + +with open(sys.argv[1], "rb") as infile: + data = infile.read() + data2 = data.decode("ascii") + result: list[pt.AsmLine] + result = parser.parse(data2, tracking=True) + errors = ass.check_instructions(result) + errors = list(errors) + + if errors: + for e in errors: + print(f"ERROR: On line {e.lineno}: {e.opcode} : {e.error_message}") + sys.exit(1) + + print("Instruction checks passed") + p = ass.assemble(result) + if len(sys.argv) >= 3: + dest = sys.argv[2] + else: + dest = sys.argv[1] + ".bin" + p.write_to_file(dest) + |
