我正在使用 64 位代码通过 syscall 指令调用 gettimeofday。
我无法得到任何结果,并且通过 Dtrace 被告知调用没有错误,但我从调用中返回的寄存器是垃圾。
我执行以下操作:
lea rdi, [rel timeval] ;buffer for 16bytes
mov rsi, 0 ;no need of timezone
mov rax, 0x2000074 ;gettimeofday
syscall
返回时 rax 既不是 0 也不是 -1,并且缓冲区永远不会获取任何数据。
请有人检查一下,看看他们是否能接到工作电话。我不知道发生了什么事。
此致
克里斯
ps 这是我刚刚尝试过的示例代码,它只返回 0。
SECTION .text
global _main
_main:
lea rdi, [rel buffer]
mov rsi, 0
mov rax, 0x2000074
syscall
mov rdi, [rel buffer]
mov rax, 0x2000001
syscall
SECTION .data
buffer:
times 16 db 0