diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-11-11 14:40:25 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-11-11 14:40:25 +0200 |
| commit | f7dd9705d44b9cee5103b267797c0449d42319df (patch) | |
| tree | a63c68f282cf64e250384a2e1e8525d2333b9dde /asm/ext_std.py | |
| parent | d3abfd22d4f5fff02adaebe28707aea7bd804ba3 (diff) | |
WIP functions
Diffstat (limited to 'asm/ext_std.py')
| -rw-r--r-- | asm/ext_std.py | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/asm/ext_std.py b/asm/ext_std.py index fd18953..f4751a3 100644 --- a/asm/ext_std.py +++ b/asm/ext_std.py @@ -67,29 +67,35 @@ def expand_nop() -> ExpandResult: return [["ali", "al_plus", "RA", "0", "RA"]] def expand_spu(reg: str) -> ExpandResult: - return [["str", reg, "__STACK_POINTER"]] + expand_inc("__STACK_POINTER") + return [["str", reg, "SP"]] + expand_inc("SP") -def expand_spo(reg: str): - return expand_dec("__STACK_POINTER") + [["ldr", "__STACK_POINTER", reg]] +def expand_spo(reg: str) -> ExpandResult: + return expand_dec("SP") + [["ldr", "SP", reg]] + +def expand_sinc(imm: str) -> ExpandResult: + return expand_addi("SP", imm, "SP") + +def expand_sdec(imm: str) -> ExpandResult: + return expand_subi("SP", imm, "SP") def expand_csr(addr_reg: str): return [ - ["lpc", "__CSR_SCRATCH"], - *expand_addi("__CSR_SCRATCH", "4", "__CSR_SCRATCH"), - *expand_spu("__CSR_SCRATCH"), + ["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", "__CSR_SCRATCH"], - *expand_addi("__CSR_SCRATCH", "4", "__CSR_SCRATCH"), - *expand_spu("__CSR_SCRATCH"), + ["lpc", "CSR_SCRATCH"], + *expand_addi("CSR_SCRATCH", "4", "CSR_SCRATCH"), + *expand_spu("CSR_SCRATCH"), ["jpi", addr_imm] ] def expand_rsr(): - return expand_spo("__CSR_SCRATCH") + [["jpr", "__CSR_SCRATCH"]] + return expand_spo("CSR_SCRATCH") + [["jpr", "CSR_SCRATCH"]] def stack_stash(*rs: str): @@ -140,6 +146,8 @@ expansions: OpExpansionDict = { "nop": expand_nop, "spu": expand_spu, "spo": expand_spo, + "sinc": expand_sinc, + "sdec": expand_sdec, "csr": expand_csr, "csi": expand_csi, "rsr": expand_rsr, |
