From da14e7ca7f31cb4b9a975dbe349fb4d385592b9c Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 11 Apr 2023 14:05:41 +0300 Subject: Fix bugs --- src/ext_std.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/ext_std.py') 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, -- cgit v1.3