From ff8d51b1c40edff424f00c0c49a89d0089387480 Mon Sep 17 00:00:00 2001 From: gbrochar Date: Sat, 24 Feb 2024 08:40:53 +0100 Subject: [PATCH] feat: ft_strcpy --- Makefile | 6 ++++-- ft_strcpy.s | 14 ++++++++++++++ libasm.h | 3 ++- main.c | 11 +++++++++++ 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 ft_strcpy.s diff --git a/Makefile b/Makefile index 10bd765..d00e6cf 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ NAME = libasm -SRC = ft_strlen.s +SRC = \ + ft_strlen.s \ + ft_strcpy.s \ OBJ = $(SRC:.s=.o) @@ -13,7 +15,7 @@ $(NAME): $(OBJ) ar rcs libasm.a $(OBJ) test: $(NAME) - gcc -Wall -Werror -Wextra main.c -L. -lasm -o libasm_unit_tests + gcc -Wall -Werror -Wextra -g main.c -L. -lasm -o libasm_unit_tests clean: rm $(OBJ) diff --git a/ft_strcpy.s b/ft_strcpy.s new file mode 100644 index 0000000..925d2d3 --- /dev/null +++ b/ft_strcpy.s @@ -0,0 +1,14 @@ +global ft_strcpy + +ft_strcpy: + xor rax, rax +.loop: + cmp byte [rsi + rax], 0 + je .done + mov rdx, [rsi + rax] + mov [rdi + rax], rdx + inc rax + jmp .loop +.done: + mov rax, rdi + ret diff --git a/libasm.h b/libasm.h index 3499474..dc1a5d6 100644 --- a/libasm.h +++ b/libasm.h @@ -3,6 +3,7 @@ #include -ssize_t ft_strlen(const char *); +size_t ft_strlen(const char *); +char *ft_strcpy(char *, const char *); #endif diff --git a/main.c b/main.c index fedfe6c..7b577ba 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,17 @@ #include "libasm.h" +#include int main() { printf("%ld\n", ft_strlen("c'est moi la chaine de 36 caracteres")); + + char *str; + str = (char *)malloc(150 * sizeof(char)); + str = "Salut c'est moi la zone mdr\0"; + char *dst; + dst = (char *)malloc(50 * sizeof(char)); + char *test = ft_strcpy(dst, str); + printf("%s\n", str); + printf("%s\n", dst); + printf("%s\n", test); return 0; }