diff --git a/src/ft_calloc.s b/src/ft_calloc.s index 958f917..e4dab1a 100644 --- a/src/ft_calloc.s +++ b/src/ft_calloc.s @@ -12,10 +12,14 @@ section .text mov rdi, rbx call malloc wrt ..plt + cmp rax, 0 + je end + mov rdi, rax mov rsi, rbx call bzero wrt ..plt - pop rbx - ret + end: + pop rbx + ret diff --git a/src/ft_strcmp.s b/src/ft_strcmp.s index 94202c9..308ed2d 100644 --- a/src/ft_strcmp.s +++ b/src/ft_strcmp.s @@ -6,8 +6,8 @@ section .text global ft_strcmp ; rdi = s1, rsi = s2 ft_strcmp: + mov rax, -1 ; counter - mov rax, -1 loop: inc rax mov cl, [rdi + rax] ; cl = s1[rax] diff --git a/src/ft_strcpy.s b/src/ft_strcpy.s index 4740275..ae99d85 100644 --- a/src/ft_strcpy.s +++ b/src/ft_strcpy.s @@ -7,11 +7,10 @@ section .text ; rdi = dst, rsi = src ft_strcpy: mov rax, 0 ; counter - mov rcx, 0 mov rdx, 0 loop: - mov dl, [rsi + rax] + mov dl, [rsi + rax] ; get char from src mov [rdi + rax], dl ; replace char by char inc rax diff --git a/src/ft_strdup.s b/src/ft_strdup.s index 6735132..be42e60 100644 --- a/src/ft_strdup.s +++ b/src/ft_strdup.s @@ -14,9 +14,13 @@ section .text inc rdi call malloc wrt ..plt + cmp rax, 0 + je end + mov rdi, rax ; put malloc result in dest mov rsi, rbx ; put s in src call ft_strcpy - pop rbx - ret + end: + pop rbx + ret diff --git a/src/ft_strlen.s b/src/ft_strlen.s index fa8cf39..ba5b230 100644 --- a/src/ft_strlen.s +++ b/src/ft_strlen.s @@ -2,18 +2,18 @@ bits 64 section .text global ft_strlen + ; rdi = str ft_strlen: ; code - mov rbx, rdi - mov rsi, -1 + mov rcx, -1 ; counter loop: - inc rsi - mov al, [rbx + rsi] + inc rcx + mov al, [rdi + rcx] cmp al, 0 jne loop ; return - mov rax, rsi + mov rax, rcx ret