diff --git a/Makefile b/Makefile index 6907a9d..2f72edd 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,8 @@ SRCS=$(SRC_DIR)/ft_strlen.asm \ $(SRC_DIR)/ft_write.asm \ $(SRC_DIR)/ft_read.asm \ $(SRC_DIR)/ft_strdup.asm \ - $(SRC_DIR)/ft_memcpy.asm + $(SRC_DIR)/ft_memcpy.asm \ + $(SRC_DIR)/ft_bzero.asm OBJS=$(patsubst $(SRC_DIR)/%.asm,$(OBJ_DIR)/%.o,$(SRCS)) DEPS=$(OBJS:.o=.d) diff --git a/src/ft_bzero.asm b/src/ft_bzero.asm new file mode 100644 index 0000000..ac5d3f3 --- /dev/null +++ b/src/ft_bzero.asm @@ -0,0 +1,16 @@ +global ft_bzero +section .text + +; rdi: dest +; rsi: len +ft_bzero: + test rsi, rsi + je .done + + xor eax, eax + mov rcx, rsi + cld + rep stosb + +.done: + ret diff --git a/src/libasm.h b/src/libasm.h index 2df3ccd..4922b74 100644 --- a/src/libasm.h +++ b/src/libasm.h @@ -13,7 +13,7 @@ ssize_t ft_write(int fildes, const void *buf, size_t nbyte); char *strdup(const char *s); ssize_t ft_read(int fd, void *buf, size_t count); void *ft_memcpy(void *dest, const void *src, size_t n); - +void ft_bzero(void *s, size_t n); #ifdef __cplusplus } #endif