Files
libasm/srcs/ft_read.s

22 lines
376 B
ArmAsm

global ft_read
extern __errno_location
section .text
ft_read:
mov rax, 0 ;syscall number for read, args are already set at the right place
syscall
cmp rax, 0 ; if return is < 0, it's an error in negative
jge .success
neg rax ; inv errno, and set errno
mov edi, eax
sub rsp, 8
call __errno_location wrt ..plt
add rsp, 8
mov [rax], edi
mov rax, -1
.success:
ret