diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2024-05-17 12:17:34 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2024-05-17 12:17:34 +0300 |
| commit | d433a9f0cdddd27b0aaae88aca8e8f909fc14a13 (patch) | |
| tree | 92abd92228eca9d948c2b0acc88a4603f59c1c5e /atk16_asm/asm_ops.py | |
| parent | 853918f4b7e9f3724be4d71014689c18c28fe61e (diff) | |
Add call macro, *_p subroutine naming convention
Diffstat (limited to 'atk16_asm/asm_ops.py')
| -rw-r--r-- | atk16_asm/asm_ops.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/atk16_asm/asm_ops.py b/atk16_asm/asm_ops.py index 65cf0da..1da8cf0 100644 --- a/atk16_asm/asm_ops.py +++ b/atk16_asm/asm_ops.py @@ -346,6 +346,16 @@ def expand_calli(addr_imm: int | str) -> ExpandResult: ] @register_macro +def expand_call(label: str, clobber_r = "RF") -> ExpandResult: + """Convenience wrapper for ldi + ldr + callr, clobbers RF by default.""" + pointer_label = f"{label}_p" + return [ + ["ldi", pointer_label, clobber_r], + ["ldr", clobber_r, clobber_r], + *expand_callr(clobber_r), + ] + +@register_macro def expand_return() -> ExpandResult: return [ ["str", "RG", "SP"], # store returned value on stack but don't increment SP |
