diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-13 14:48:34 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-13 14:49:59 +0300 |
| commit | 9d4c6fc299294ac36f7082599edce19286fa0f99 (patch) | |
| tree | e7601bb1cd9950482f125377d25b6d5d40b72e62 /src/asm_pass4.py | |
| parent | afd5f32e56d3d30bfa98fb35deff51febf50e594 (diff) | |
Add @let directive, start pondering interrupt control
Diffstat (limited to 'src/asm_pass4.py')
| -rw-r--r-- | src/asm_pass4.py | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/asm_pass4.py b/src/asm_pass4.py index dc65b65..462707a 100644 --- a/src/asm_pass4.py +++ b/src/asm_pass4.py @@ -17,7 +17,7 @@ class Result4: lines: list[Result4Line] options: Options operations: OpExpansionDict - labels: dict[str, int] + symbols: dict[str, int] def translate_opt(arg: str, options: Options) -> str: match arg: @@ -27,12 +27,11 @@ def translate_opt(arg: str, options: Options) -> str: def pass_4(result3: Result3) -> Result4: result_lines: list[Result4Line] = [] - address = 0 for line in result3.lines: keyword, *args = line.parts meta = Meta( - address=address, + address=line.address, ) args = list(map(lambda a: translate_opt(a, result3.options), args)) @@ -41,7 +40,7 @@ def pass_4(result3: Result3) -> Result4: if keyword in operations: fn = operations[keyword] - word = fn(meta, result3.labels, *args) + word = fn(meta, result3.symbols, *args) result_lines.append(Result4Line( line_num=line.line_num, src_file=line.src_file, @@ -56,18 +55,16 @@ def pass_4(result3: Result3) -> Result4: line_num=line.line_num, src_file=line.src_file, address=line.address, - word=eval_expr(result3.labels, keyword), + word=eval_expr(result3.symbols, keyword), text=text, original_text=original_text, )) except: raise Exception(f"Invalid assembly at {line.src_file}:{line.line_num + 1}\n\n{line}") - address += 1 - return Result4( operations=result3.operations, - labels=result3.labels, + symbols=result3.symbols, options=result3.options, lines=result_lines, ) |
