diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2024-02-22 08:52:20 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2024-02-22 08:52:20 +0200 |
| commit | 416e896956d3b05793337da6609fe1544797c0a9 (patch) | |
| tree | 9fa0cf3b622d4c9c086e4c08c5011ab12fdd4a77 /resources/asm | |
| parent | aefe0cf3874c542669051b2b3cc21c9590aa970b (diff) | |
Add stuff, refactor
Diffstat (limited to 'resources/asm')
| -rw-r--r-- | resources/asm/ext_std.py | 157 | ||||
| -rw-r--r-- | resources/asm/ext_string_io.py | 3 |
2 files changed, 1 insertions, 159 deletions
diff --git a/resources/asm/ext_std.py b/resources/asm/ext_std.py deleted file mode 100644 index 247e605..0000000 --- a/resources/asm/ext_std.py +++ /dev/null @@ -1,157 +0,0 @@ -from asm_ops import * - -def expand_add(left: str, right: str, target: str) -> ExpandResult: - return [["alr", "al_plus", left, right, target]] - -def expand_sub(left: str, right: str, target: str) -> ExpandResult: - return [["alr", "al_minus", left, right, target]] - -def expand_addi(left: str, imm: str, target: str) -> ExpandResult: - return [["ali", "al_plus", left, imm, target]] - -def expand_subi(left: str, imm: str, target: str) -> ExpandResult: - return [["ali", "al_minus", left, imm, target]] - -def expand_not(reg: str, target: str) -> ExpandResult: - return [["alr", "al_xor", reg, "0xFFFF", target]] - -def expand_noti(imm: str, target: str) -> ExpandResult: - return [["ali", "al_xor", imm, "0xFFFF", target]] - -def expand_and(left: str, right: str, target: str) -> ExpandResult: - return [["alr", "al_and", left, right, target]] - -def expand_andi(left: str, imm: str, target: str) -> ExpandResult: - return [["ali", "al_and", left, imm, target]] - -def expand_or(left: str, right: str, target: str) -> ExpandResult: - return [["alr", "al_or", left, right, target]] - -def expand_ori(left: str, imm: str, target: str) -> ExpandResult: - return [["ali", "al_or", left, imm, target]] - -def expand_xor(left: str, imm: str, target: str) -> ExpandResult: - return [["alr", "al_xor", left, imm, target]] - -def expand_xori(left: str, right: str, target: str) -> ExpandResult: - return [["ali", "al_xor", left, right, target]] - -def expand_sll(left: str, right: str, target: str) -> ExpandResult: - return [["alr", "al_sll", left, right, target]] - -def expand_slr(left: str, right: str, target: str) -> ExpandResult: - return [["alr", "al_slr", left, right, target]] - -def expand_sar(left: str, right: str, target: str) -> ExpandResult: - return [["alr", "al_sar", left, right, target]] - -def expand_slli(left: str, imm: str, target: str) -> ExpandResult: - return [["ali", "al_sll", left, imm, target]] - -def expand_slri(left: str, imm: str, target: str) -> ExpandResult: - return [["ali", "al_slr", left, imm, target]] - -def expand_sari(left: str, imm: str, target: str) -> ExpandResult: - return [["ali", "al_sar", left, imm, target]] - -def expand_inc(reg: str) -> ExpandResult: - return [["ali", "al_plus", reg, "1", reg]] - -def expand_dec(reg: str) -> ExpandResult: - return [["ali", "al_minus", reg, "1", reg]] - -def expand_mov(from_reg: str, to_reg: str) -> ExpandResult: - return [["ali", "al_plus", from_reg, "0", to_reg]] - -def expand_nop() -> ExpandResult: - return [["ali", "al_plus", "RA", "0", "RA"]] - -def expand_spu(reg: str) -> ExpandResult: - return [["str", reg, "SP"]] + expand_inc("SP") - -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, stratch_reg: str): - return [ - ["lpc", stratch_reg], - *expand_addi(stratch_reg, "4", stratch_reg), - *expand_spu(stratch_reg), - ["jpr", addr_reg] - ] - -def expand_csi(addr_imm: str, stratch_reg: str): - return [ - ["lpc", stratch_reg], - *expand_addi(stratch_reg, "4", stratch_reg), - *expand_spu(stratch_reg), - ["jpi", addr_imm] - ] - -def expand_rsr(stratch_reg: str): - return expand_spo(stratch_reg) + [["jpr", stratch_reg]] - - -def stack_stash(*rs: str): - result: ExpandResult = [] - for r in rs: - result += expand_spu(r) - - return result - -def stack_restore(*rs: str): - result: ExpandResult = [] - for r in rs: - prefix = expand_spu(r) - result = prefix + result - - return result - -def set_graphics_mode(mode: str): - return [ - ["ldi", "vt_gr_mode_addr", "RA"], - ["ldr", "RA", "RA"], - ["ldi", mode, "RB"], - ["str", "RB", "RA"], - ] - -expansions: OpExpansionDict = { - "add": expand_add, - "sub": expand_sub, - "addi": expand_addi, - "subi": expand_subi, - "not": expand_not, - "noti": expand_noti, - "and": expand_and, - "andi": expand_andi, - "or": expand_or, - "ori": expand_ori, - "xor": expand_xor, - "xori": expand_xori, - "sll": expand_sll, - "slr": expand_slr, - "sar": expand_sar, - "slli": expand_slli, - "slri": expand_slri, - "sari": expand_sari, - "inc": expand_inc, - "dec": expand_dec, - "mov": expand_mov, - "nop": expand_nop, - "spu": expand_spu, - "spo": expand_spo, - "sinc": expand_sinc, - "sdec": expand_sdec, - "csr": expand_csr, - "csi": expand_csi, - "rsr": expand_rsr, - "stack_stash": stack_stash, - "stack_restore": stack_restore, - "set_graphics_mode": set_graphics_mode, -} diff --git a/resources/asm/ext_string_io.py b/resources/asm/ext_string_io.py index 519077d..e00ac78 100644 --- a/resources/asm/ext_string_io.py +++ b/resources/asm/ext_string_io.py @@ -1,5 +1,4 @@ -from asm_ops import * -from ext_std import * +from atk16_asm.asm_ops import * def to_char_code(c: str): return ord(c) |
