Я делаю школьный проект и пытаюсь настроить переменную Errno с помощью NASM.
Мое упражнение состоит в том, чтобы воспроизвести функцию записи, используя только NASM. Я вообще не могу использовать язык C. Моя функция должна разрешить файлу C читать значение Errno, если есть ошибка (например, длина записи <0). </p>
Я пытался использовать call ___error ("extern ___error" в заголовок файла), но я не совсем уверен, как его следует использовать.
Я понял, что Errno не связан с конкретным регистром.
Итак, мой вопрос: как что мне делать, чтобы присвоить Errno хорошее значение без использования языка C?
Вот мой код на данный момент:
extern ___error
SYS_WRITE_MAC equ 0x2000004
SYS_WRITE_LINUX equ 4
section .text
global _ft_write
_ft_write:
cmp rdx, 0
jl _end
cmp rdi, 0
jl _end
mov rax, SYS_WRITE_MAC
syscall
mov rdi, rax
mov r15, rax
call ___error
mov rax, r15
ret
_end:
call ___error
mov rax, -1
ret
Извините, если я не понимаю, я ' м не родной англи sh динамик.