-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patharch242_assembler.py
More file actions
47 lines (41 loc) · 1.25 KB
/
Copy patharch242_assembler.py
File metadata and controls
47 lines (41 loc) · 1.25 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from assembler.module import Arch242Assembler
from assembler.exception_handler_assembler import *
import sys
def print_error(error):
print(f"\nAssembling Error: {error}", file=sys.stderr)
def run_assembler():
if len(sys.argv) != 3:
print("Usage: python run_assembler.py <input_file> <bin|hex>", file=sys.stderr)
sys.exit(1)
input_file = sys.argv[1]
output_format = sys.argv[2]
assembler = Arch242Assembler()
try:
output_data = assembler.assemble_code(input_file, output_format)
assembler.write_output(output_data, input_file, output_format)
except InputFileError as e:
print_error(e)
sys.exit(2)
except InvalidOutputFormatError as e:
print_error(e)
sys.exit(3)
except SyntaxError as e:
print_error(e)
sys.exit(4)
except LabelError as e:
print_error(e)
sys.exit(5)
except ValueError as e:
print_error(e)
sys.exit(6)
except OutputFileError as e:
print_error(e)
sys.exit(7)
except AssemblerError as e:
print_error(e)
sys.exit(8)
except Exception as e:
print(f"\nUnexpected error: {e}", file=sys.stderr)
sys.exit(9)
if __name__ == "__main__":
run_assembler()