diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-11 14:38:51 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-11 14:38:51 +0300 |
| commit | dd3c90011ab33717e4c4175cd6804ae86582135f (patch) | |
| tree | 60519868e7c329eef0dd5eb22026e8c6ed85245a /src/assembler_eval.py | |
| parent | da14e7ca7f31cb4b9a975dbe349fb4d385592b9c (diff) | |
Refactor folder
Diffstat (limited to 'src/assembler_eval.py')
| -rw-r--r-- | src/assembler_eval.py | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/src/assembler_eval.py b/src/assembler_eval.py deleted file mode 100644 index 691e4eb..0000000 --- a/src/assembler_eval.py +++ /dev/null @@ -1,47 +0,0 @@ -constants: dict[str, str] = { - # Registers - "ra": "0", - "rb": "1", - "rc": "2", - "rd": "3", - "re": "4", - "rf": "5", - "rg": "6", - "rh": "7", - # ALU instructions - "al_plus": "0", - "al_minus": "1", - "al_and": "2", - "al_or": "3", - "al_xor": "4", - "al_slr": "5", - "al_sar": "6", - "al_sll": "7", - # ALU flags - "carry": "0", - "overflow": "1", - "zero": "2", - "sign": "3", -} - -Labels = dict[str, int] - -def check_size(bits: int, val: int) -> None: - if val >= 2 ** bits: - raise Exception(f"Value does not fit in {bits} bits: {val}") - -def eval_symbol(labels: Labels, c: str) -> str: - if c in labels: - return str(labels[c]) - - if c in constants: - return constants[c] - - return c - -def eval_expr(labels: Labels, expr: str, bits: int = 16) -> int: - expr = expr.lower() - expr = eval_symbol(labels, expr) - ret = eval(expr, labels.copy()) # eval as Python expr - check_size(bits, ret) - return ret |
