global ft_write extern __errno_location ft_write: mov rax, 1 ; syscall write, other arguments should be good accord to calling convention syscall cmp eax, -1 ; linux syscalls errors are always in the range -4095 to -1 jg .done cmp eax, -4095 jl .done mov rcx, rax ; save return value of syscall call __errno_location WRT ..plt ; put address of errno in rax neg rcx ; errno should be positive mov [rax], rcx ; set errno mov rax, -1 ; set return value of ft_write to -1 ret .done: ret