libasm/ft_list_push_front_bonus.s

20 lines
447 B
ArmAsm

global ft_list_push_front
extern malloc
ft_list_push_front:
push rdi ; caller saved (begin_list)
push rsi ; caller saved (data)
mov rdi, 16 ; sizeof(t_list)
call malloc WRT ..plt
cmp rax, 0
je .done
pop rsi ; restore data
pop rdi ; restore begin_list
mov [rax], rsi ; new_node->data = data(rsi)
mov rdx, [rdi] ; rdx = *begin_list
mov [rax + 8], rdx ; new_node->next = *begin_list
mov [rdi], rax ; *begin_list = new_node
.done:
ret