20 lines
447 B
ArmAsm
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
|