diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-11 14:05:41 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-04-11 14:05:41 +0300 |
| commit | da14e7ca7f31cb4b9a975dbe349fb4d385592b9c (patch) | |
| tree | ea60a83ccb64af33a48f13839e6145b7c97236d2 /src/ext_std.py | |
| parent | 9a6001ad380e83a545188b58145387593b117b48 (diff) | |
Fix bugs
Diffstat (limited to 'src/ext_std.py')
| -rw-r--r-- | src/ext_std.py | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/ext_std.py b/src/ext_std.py index a6b175a..5f41f60 100644 --- a/src/ext_std.py +++ b/src/ext_std.py @@ -52,16 +52,25 @@ def expand_spu(reg: str) -> ExpandResult: return [["str", reg, "__STACK_POINTER"]] + expand_inc("__STACK_POINTER") def expand_spo(reg: str): - return expand_dec("__STACK_POINTER") + [["ldr", reg, "__STACK_POINTER"]] + return expand_dec("__STACK_POINTER") + [["ldr", "__STACK_POINTER", reg]] def expand_csr(addr_reg: str): - return [["lpc", "__STACK_POINTER"]] + expand_spu("__STACK_POINTER") + [["jpr", addr_reg]] + return [ + ["lpc", "__CSR_SCRATCH"], + *expand_addi("__CSR_SCRATCH", "4", "__CSR_SCRATCH"), + *expand_spu("__CSR_SCRATCH"), + ["jpr", addr_reg] + ] def expand_csi(addr_imm: str): - return [["lpc", "__STACK_POINTER"]] + expand_spu("__STACK_POINTER") + [["jpr", addr_imm]] - + return [ + ["lpc", "__CSR_SCRATCH"], + *expand_addi("__CSR_SCRATCH", "4", "__CSR_SCRATCH"), + *expand_spu("__CSR_SCRATCH"), + ["jpi", addr_imm] + ] def expand_rsr(): - return expand_spo("__STACK_POINTER") + [["jpr", "__CSR_SCRATCH"]] + return expand_spo("__CSR_SCRATCH") + [["jpr", "__CSR_SCRATCH"]] expansions: OpExpansionDict = { "add": expand_add, |
