blob: f77d07a4e9170c5bb9b1694a155becd860d0780e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)
|