【发布时间】:2020-11-01 16:51:25
【问题描述】:
我正在做一个学校的项目,并尝试使用 NASM 设置变量 Errno。
我的练习是仅使用 NASM 复制函数 write。我根本不会使用C语言。如果出现错误(例如要写入的长度
我尝试使用 call ___error(文件头中的“extern ___error”),但我不确定应该如何使用它。
我的理解是 Errno 没有链接到特定的寄存器。
所以我的问题是:我应该如何在不使用 C 语言的情况下为 Errno 分配好的价值?
这是我目前的代码:
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
对不起,如果我不能理解,我不是以英语为母语的人。
【问题讨论】:
标签: assembly nasm system-calls errno