From d433a9f0cdddd27b0aaae88aca8e8f909fc14a13 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Fri, 17 May 2024 12:17:34 +0300 Subject: Add call macro, *_p subroutine naming convention --- atk16_asm/asm_ops.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'atk16_asm/asm_ops.py') 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 @@ -345,6 +345,16 @@ def expand_calli(addr_imm: int | str) -> ExpandResult: *expand_dec("SP"), # decrement SP to fix stack ] +@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 [ -- cgit v1.3