Files
libasm/ft_write.s
2024-03-19 06:54:34 +01:00

33 lines
458 B
ArmAsm

global ft_write
extern __errno_location
ft_write:
cmp rdi, 0
jl .err_fd
test rsi, rsi
je .err_buffer
mov eax, 0x1 ; put the syscall number of write
syscall
test rax, rax
js .error
ret
.err_fd:
call __errno_location wrt ..plt
mov byte [rax], 22
mov rax, -1
ret
.err_buffer:
call __errno_location wrt ..plt
mov byte [rax], 22
mov rax, -1
ret
.error:
mov rdx, rax
call __errno_location wrt ..plt
neg rdx
mov [rax], rdx
mov rax, -1
ret