diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-10 13:15:59 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-10 13:15:59 +0300 |
| commit | f07900a66952edb27114b8bdd68efc397b995796 (patch) | |
| tree | cbb13e08b222cab594332ae11d863e793528799a /src/assembler_eval.py | |
| parent | a58375eee5d607fbb44620752195eafb9407685e (diff) | |
Add ext system
Diffstat (limited to 'src/assembler_eval.py')
| -rw-r--r-- | src/assembler_eval.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/assembler_eval.py b/src/assembler_eval.py new file mode 100644 index 0000000..3473ab8 --- /dev/null +++ b/src/assembler_eval.py @@ -0,0 +1,39 @@ +constants: dict[str, str] = { + # Registers + "rz": "0", + "ra": "1", + "rb": "2", + "rc": "3", + "rd": "4", + "rf": "5", + "rg": "6", + # ALU instructions + "al_plus": "0", + "al_minus": "1", + "al_and": "2", + "al_or": "3", + "al_xor": "4", + "al_shift_lr": "5", + "al_shift_ar": "6", + "al_shift_ll": "7", + # ALU flags + "f_carry": "0", + "f_overflow": "1", + "f_zero": "2", + "f_sign": "3", +} + +labels: dict[str, int] = {} + +def eval_symbol(c: str) -> str: + if c in labels: + return str(labels[c]) + + if c in constants: + return constants[c] + + return c + +def eval_expr(expr: str) -> int: + expr = eval_symbol(expr) + return eval(expr, labels.copy()) # eval as Python expr |
