diff options
| author | uvok | 2026-01-14 20:44:16 +0100 |
|---|---|---|
| committer | uvok | 2026-01-14 20:44:16 +0100 |
| commit | 1561eff8780dc15dc5ea46d7225cc49a46f709ca (patch) | |
| tree | 130d44ef295ff2113fc56c592a78780035449dff /nandgame/assembler/assembler_main .py | |
| parent | 281414ea9b42e213b85b95b7072b73d1f1e3f240 (diff) | |
Restructure asembler as package
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) + |
