Я пишу сборку для школьного проекта, и я застрял в какой-то точке, мне нужно переписать чтение в asm, так что я понял, но мне нужно установить переменную errno, тогда мое чтение может вернуть -1 в случае ошибки и установите значение errno, например, на 9. И я не нашел, как изменить эту знаменитую ошибку :( это мой фактический код:
global my_write
section .text
my_write:
mov rax, 1 ; sys_write
syscall ; call write
cmp rax, 0
jl error
ret
error:
mov rax, -1
ret
ps: я нашел где-то, что мне нужно использовать __error, но я не нашел никаких документов по этому поводу: (
большое спасибо: D
edit:
Спасибо за вашу помощь, ребята! __Errno_location work Я делаю это:
extern __ernno_location
global my_write
section .text
my_write:
mov rax, 1 ; sys_write
syscall ; call write
cmp rax, 0
jl error
ret
error:
neg rax ; get absolute value of syscall return
mov rdi, rax
call __ernno_location
mov [rax], rdi ; set the value of errno
mov rax, -1
ret