36 lines
717 B
ArmAsm
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
|