aboutsummaryrefslogtreecommitdiffstats
path: root/src/assembler_eval.py
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2023-04-11 14:38:51 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2023-04-11 14:38:51 +0300
commitdd3c90011ab33717e4c4175cd6804ae86582135f (patch)
tree60519868e7c329eef0dd5eb22026e8c6ed85245a /src/assembler_eval.py
parentda14e7ca7f31cb4b9a975dbe349fb4d385592b9c (diff)
Refactor folder
Diffstat (limited to 'src/assembler_eval.py')
-rw-r--r--src/assembler_eval.py47
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