From 274cf8281ee6feb9615f4e0aca7734ecbb21c347 Mon Sep 17 00:00:00 2001 From: lohhiiccc Date: Fri, 12 Jun 2026 13:09:21 +0200 Subject: [PATCH] feat: ft_strcmp --- Makefile | 1 + src/ft_strcmp.asm | 24 ++++++++++++++++++++++++ src/mylib.h | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/ft_strcmp.asm diff --git a/Makefile b/Makefile index c6482c1..38b83be 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,7 @@ SHARED_LIB=lib$(LIB_NAME).so SRCS=$(SRC_DIR)/ft_strlen.asm \ $(SRC_DIR)/ft_strcpy.asm \ + $(SRC_DIR)/ft_strcmp.asm OBJS=$(patsubst $(SRC_DIR)/%.asm,$(OBJ_DIR)/%.o,$(SRCS)) DEPS=$(OBJS:.o=.d) diff --git a/src/ft_strcmp.asm b/src/ft_strcmp.asm new file mode 100644 index 0000000..003abb8 --- /dev/null +++ b/src/ft_strcmp.asm @@ -0,0 +1,24 @@ +global ft_strcmp +section .text + +;rdi: const char *p1 +;rsi: const char *p2 +ft_strcmp: + +.loop + movzx r10, byte [rdi] + inc rdi + movzx r11, byte [rsi] + inc rsi + + cmp r10, 0x0 + je .done + + + cmp r10, r11 + je .loop + +.done: + mov rax, r10 + sub rax, r11 + ret diff --git a/src/mylib.h b/src/mylib.h index 9b70800..b12f01a 100644 --- a/src/mylib.h +++ b/src/mylib.h @@ -8,7 +8,7 @@ extern "C" { size_t ft_strlen(char *str); char *ft_strcpy(char *dest, const char *src); - +int ft_strcmp (const char *p1, const char *p2); #ifdef __cplusplus }