aboutsummaryrefslogtreecommitdiffstats
path: root/asm/ext_std.py
diff options
context:
space:
mode:
Diffstat (limited to 'asm/ext_std.py')
-rw-r--r--asm/ext_std.py28
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,