From e40d4748cd19d89435ba6a00e2859f7d0e892009 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 11 Dec 2025 23:11:49 +0100 Subject: [PATCH] feat(write): adding the write function in asm --- src/ft_write.s | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/ft_write.s diff --git a/src/ft_write.s b/src/ft_write.s new file mode 100644 index 0000000..c1218be --- /dev/null +++ b/src/ft_write.s @@ -0,0 +1,21 @@ +segment .note.GNU-stack +extern __errno_location + +section .text + global ft_write + +ft_write: + mov rax, 1 ; syscall 1 is for write + syscall ; call the system call write + cmp rax, 0 ; check if the return value of syscall + jl .error ; jump if the return value is less than 0 + ret ; return the value of the syscall + +.error: + mov rdi, rax ; stock errno value in rdi + neg rdi ; errno value in positive (index used by C function) + call __errno_location ; rax = &errno + mov [rax], edi ; stock the errno return in the address of rax + mov rax, -1 ; set the value of rax to -1 + ret ; return with -1 (and errno value) +