aboutsummaryrefslogtreecommitdiff
path: root/ft_list_push_front.s
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-02-06 00:29:09 +0100
committerCharles <sircharlesaze@gmail.com>2020-02-06 00:29:09 +0100
commit0e73aff73d301aac59dd604f6137969c3e2403ce (patch)
treeadceee473f511c1286128d10f7ac704d4ba2c6f6 /ft_list_push_front.s
parent6808cd0fbd3edf68422228d2ee6a41ad70f971d5 (diff)
downloadlibasm-0e73aff73d301aac59dd604f6137969c3e2403ce.tar.gz
libasm-0e73aff73d301aac59dd604f6137969c3e2403ce.tar.bz2
libasm-0e73aff73d301aac59dd604f6137969c3e2403ce.zip
read write protection, ft_list_size, ft_list_push_front finished
Diffstat (limited to 'ft_list_push_front.s')
-rw-r--r--ft_list_push_front.s23
1 files changed, 19 insertions, 4 deletions
diff --git a/ft_list_push_front.s b/ft_list_push_front.s
index 686ee10..6a95909 100644
--- a/ft_list_push_front.s
+++ b/ft_list_push_front.s
@@ -10,13 +10,28 @@
; ;
; **************************************************************************** ;
+extern _malloc
+
global _ft_list_push_front
; void ft_list_push_front(t_list **begin_list, void *data);
_ft_list_push_front:
- cmp rdi, 0
- je FT_LIST_PUSH_FRONT_END
- mov [rsi + 8], [rdi]
- mov [rdi], rsi
+ cmp rdi, 0
+ je FT_LIST_PUSH_FRONT_END
+
+ push rdi
+ push rsi
+ xor rdi, rdi
+ mov edi, 16
+ call _malloc
+ pop rsi
+ pop rdi
+ cmp rax, 0
+ je FT_LIST_PUSH_FRONT_END
+
+ mov qword [rax + 0], rsi
+ mov r10, [rdi]
+ mov [rax + 8], r10
+ mov [rdi], rax
FT_LIST_PUSH_FRONT_END:
ret