feat(strdup): adding the function in asm

This commit is contained in:
Raphael 2026-01-13 14:00:21 +01:00
parent cb24a4301e
commit ac1ce88633
No known key found for this signature in database

27
src/ft_strdup.s Normal file
View file

@ -0,0 +1,27 @@
segment .note.GNU-stack
extern ft_strcpy
extern ft_strlen
extern malloc
section .text
global ft_strdup
ft_strdup:
push rbx ; save rbx
cmp rdi, 0 ; check s is NULL
je .restore_exit ; exit (with restore of rbx) if true
mov rbx, rdi ; save rdi value in rbx
call ft_strlen ; call ft_strlen on rdi
lea rdi, [rax + 1] ; calculation of the malloc size
call malloc ; malloc is called return value on rax
test rax, rax ; check the return value of malloc
je .restore_exit ; exit (with restore of rbx) if true
mov rdi, rax ; set the dest string (for ft_strcpy)
mov rsi, rbx ; set the source string (for ft_strcpy)
pop rbx ; restore rbx
jmp ft_strcpy ; call ft_strcpy
.restore_exit:
pop rbx ; restore rbx
ret ; return rax (NULL)