如何在汇编中获取以毫秒为单位的时间?

How to get time in milliseconds in assembly?

我可以秒取,但是毫秒的值怎么取呢? 我正在尝试使用 gettimeofday 系统调用:

sys_gettimeofday_ms:
enter   [=10=], [=10=]
pushq   [=10=]
pushq   
leaq    -16(%rbp), %rdi
mov     , %rax
syscall

movq    -16(%rbp), %rax

leave
ret

这可能有效(未经测试),针对 x86_64 Linux。

sys_gettimeofday_ms:
    mov rax, 96
    lea rdi, [rsp - 16]
    xor esi, esi
    syscall
    mov ecx, 1000
    mov rax, [rdi + 8]
    xor edx, edx
    div rcx
    mov rdx, [rdi]
    imul rdx, rcx
    add rax, rdx
    ret