From accca3f5388d93ceeb7ad2bc0d859d627209d459 Mon Sep 17 00:00:00 2001 From: lohhiiccc Date: Thu, 18 Jun 2026 17:39:34 +0200 Subject: [PATCH] feat: ft_list_size --- src/ft_list_size.asm | 33 +++++++++++++++++++++++++++++++++ src/libasm.h | 1 + 2 files changed, 34 insertions(+) create mode 100644 src/ft_list_size.asm diff --git a/src/ft_list_size.asm b/src/ft_list_size.asm new file mode 100644 index 0000000..aa9f79b --- /dev/null +++ b/src/ft_list_size.asm @@ -0,0 +1,33 @@ +global ft_list_size + +%define NODE_SIZE 16 + +section .text + +;int ft_list_size(t_list *begin_list) +;{ +; int i = 0; +; while (begin_list) +; { +; begin_list = begin_list->next +; i++; +; } +; return i; +;} + +; rdi: t_list * +ft_list_size: + ; int i = 0 + xor rax, rax + +.loop: + test rdi, rdi + je .done + + mov rdi, [rdi + 8] + inc rax + + jmp .loop +.done: + + ret diff --git a/src/libasm.h b/src/libasm.h index 97e841b..8db4663 100644 --- a/src/libasm.h +++ b/src/libasm.h @@ -22,6 +22,7 @@ void *ft_memcpy(void *dest, const void *src, size_t n); void ft_bzero(void *s, size_t n); int ft_atoibase(char *str, char *base); void ft_list_push_front(t_list **begin_list, void *data); +int ft_list_size(t_list *begin_list); #ifdef __cplusplus }