aboutsummaryrefslogtreecommitdiff
path: root/ft_list_remove_if.s
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2021-02-11 15:44:44 +0100
committerCharles Cabergs <me@cacharle.xyz>2021-02-11 15:44:44 +0100
commitd6240e3f6aeb342aaf13284c7cc93226970648aa (patch)
treea5fef5bd1d55e0dd63cb986a445254cf8caa94ce /ft_list_remove_if.s
parentcd5c9e6a923878e797212d27476ee217eb844a14 (diff)
downloadlibasm-d6240e3f6aeb342aaf13284c7cc93226970648aa.tar.gz
libasm-d6240e3f6aeb342aaf13284c7cc93226970648aa.tar.bz2
libasm-d6240e3f6aeb342aaf13284c7cc93226970648aa.zip
Replaced tab with spaces
Diffstat (limited to 'ft_list_remove_if.s')
-rw-r--r--ft_list_remove_if.s126
1 files changed, 63 insertions, 63 deletions
diff --git a/ft_list_remove_if.s b/ft_list_remove_if.s
index 7ce06a0..61f3410 100644
--- a/ft_list_remove_if.s
+++ b/ft_list_remove_if.s
@@ -25,78 +25,78 @@ extern M_FREE
%define NULL 0x0
%macro EXTERN_FUNCTION_SAVE 0
- push rdi
- push rsi
- push rdx
- push rcx
+ push rdi
+ push rsi
+ push rdx
+ push rcx
%endmacro
%macro EXTERN_FUNCTION_SAVE_END 0
- pop rcx
- pop rdx
- pop rsi
- pop rdi
+ pop rcx
+ pop rdx
+ pop rsi
+ pop rdi
%endmacro
; ft_list_remove_if(t_list **begin_list, void *data_ref,
; int (*cmp)(void *data, void *data_ref),
; void (*free_fct)(void *))
M_FT_LIST_REMOVE_IF:
- ; t_list *saved_next
-
- ; === prolog ===
- push rbp
- mov rbp, rsp
- sub rsp, 8
-
- ; === base condition ===
- cmp rdi, NULL
- je FT_LIST_REMOVE_IF_END
- cmp qword [rdi], NULL
- je FT_LIST_REMOVE_IF_END
-
- ; === compare (*begin_list)->data and data_ref
- EXTERN_FUNCTION_SAVE
- mov rdi, [rdi]
- mov rdi, [rdi + 0]
- call rdx ; cmp((*begin_list)->data, data_ref)
- EXTERN_FUNCTION_SAVE_END
- cmp rax, 0
- je FT_LIST_REMOVE_IF_REMOVE
-
- ; === next element ===
- push rdi
- mov rdi, [rdi]
- lea rdi, [rdi + 8]
- call M_FT_LIST_REMOVE_IF
- pop rdi
- jmp FT_LIST_REMOVE_IF_END
-
- ; === remove head and go next ===
+ ; t_list *saved_next
+
+ ; === prolog ===
+ push rbp
+ mov rbp, rsp
+ sub rsp, 8
+
+ ; === base condition ===
+ cmp rdi, NULL
+ je FT_LIST_REMOVE_IF_END
+ cmp qword [rdi], NULL
+ je FT_LIST_REMOVE_IF_END
+
+ ; === compare (*begin_list)->data and data_ref
+ EXTERN_FUNCTION_SAVE
+ mov rdi, [rdi]
+ mov rdi, [rdi + 0]
+ call rdx ; cmp((*begin_list)->data, data_ref)
+ EXTERN_FUNCTION_SAVE_END
+ cmp rax, 0
+ je FT_LIST_REMOVE_IF_REMOVE
+
+ ; === next element ===
+ push rdi
+ mov rdi, [rdi]
+ lea rdi, [rdi + 8]
+ call M_FT_LIST_REMOVE_IF
+ pop rdi
+ jmp FT_LIST_REMOVE_IF_END
+
+ ; === remove head and go next ===
FT_LIST_REMOVE_IF_REMOVE:
- mov rax, [rdi] ; rax = *begin_list
- mov rax, [rax + 8] ; rax = rax->next
- mov [rbp - 8], rax ; saved_next = (*begin_list)->next
-
- push rdi ; strange behavior
- EXTERN_FUNCTION_SAVE
- mov rdi, [rdi]
- mov rdi, [rdi + 0]
- call rcx ; free_fct((*begin_list)->data)
- EXTERN_FUNCTION_SAVE_END
- pop rdi
-
- EXTERN_FUNCTION_SAVE
- mov rdi, [rdi]
- call M_FREE wrt ..plt ; free(*begin_list)
- EXTERN_FUNCTION_SAVE_END
-
- mov rax, [rbp - 8]
- mov [rdi], rax
- call M_FT_LIST_REMOVE_IF
+ mov rax, [rdi] ; rax = *begin_list
+ mov rax, [rax + 8] ; rax = rax->next
+ mov [rbp - 8], rax ; saved_next = (*begin_list)->next
+
+ push rdi ; strange behavior
+ EXTERN_FUNCTION_SAVE
+ mov rdi, [rdi]
+ mov rdi, [rdi + 0]
+ call rcx ; free_fct((*begin_list)->data)
+ EXTERN_FUNCTION_SAVE_END
+ pop rdi
+
+ EXTERN_FUNCTION_SAVE
+ mov rdi, [rdi]
+ call M_FREE wrt ..plt ; free(*begin_list)
+ EXTERN_FUNCTION_SAVE_END
+
+ mov rax, [rbp - 8]
+ mov [rdi], rax
+ call M_FT_LIST_REMOVE_IF
FT_LIST_REMOVE_IF_END:
- ; === epilog ===
- mov rsp, rbp
- pop rbp
- ret
+ ; === epilog ===
+ mov rsp, rbp
+ pop rbp
+ ret