Любой может понять, как работает GetTimeOfDay?

GetTimeOfDay - это Syscall of X86-86 согласно Эта страница (просто поиск GetTimeOfday в поле):

int gettimeofday(struct timeval *tv, struct timezone *tz);

Я думал, что DISAC должен быть легким родом, просто подготовить два указателя и вызовите связанные SYSCALL .

Но его Dious делают гораздо больше:

(gdb) disas gettimeofday
Dump of assembler code for function gettimeofday:
0x00000034f408c2d0 : sub    $0x8,%rsp
0x00000034f408c2d4 : mov    $0xffffffffff600000,%rax
0x00000034f408c2db : callq  *%rax
0x00000034f408c2dd : cmp    $0xfffff001,%eax
0x00000034f408c2e2 : jae    0x34f408c2e9 
0x00000034f408c2e4 : add    $0x8,%rsp
0x00000034f408c2e8 : retq   
0x00000034f408c2e9 : mov    0x2c4cb8(%rip),%rcx        # 0x34f4350fa8 
0x00000034f408c2f0 : xor    %edx,%edx
0x00000034f408c2f2 : sub    %rax,%rdx
0x00000034f408c2f5 : mov    %edx,%fs:(%rcx)
0x00000034f408c2f8 : or     $0xffffffffffffffff,%rax
0x00000034f408c2fc : jmp    0x34f408c2e4 
End of assembler dump. 

и я не вижу Syscall вообще.

Кто-нибудь понимает, как это работает?

8
задан asker 1 September 2011 в 06:36
поделиться