lang/src/lexer/func_boiler_plate.s
2025-05-14 17:53:43 +02:00

36 lines
717 B
ArmAsm

%include "./src/inc/c_alignment.s"
section .text
extern putstr
extern putnumberendl
extern fd_out
extern ft_fprintf
func_stack_alloc: db " push rbp", 0xa, " mov rbp, rsp", 0xa, " sub rsp, %d", 0x0a, 0
func_stack_dealloc: db " mov rsp, rbp", 0xa, " pop rbp", 0xa, 0
ret_inst: db " ret", 0xa, 0
global func_prologue
func_prologue: ; (rdi: var_count)
; calculate var offsets
mov rax, 8
imul rax, rdi
; prepare func call
mov rdi, [fd_out]
mov rsi, func_stack_alloc
mov rdx, rax
c_call ft_fprintf
ret
global func_epilogue
func_epilogue: ;
mov rdi, [fd_out]
mov rsi, func_stack_dealloc
c_call ft_fprintf
ret