我正在运行一个64位Debian 4.7.2-5 Linux系统,使用glibc-2.13-1。当我正在寻找在libc.a
一些函数调用的汇编代码我碰到这样的:了解libc.a中的简单Linux系统调用
file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <sync>:
0: b9 a2 00 00 00 mov eax,0xa2
5: 0f 05 syscall
7: 48 3d 01 f0 ff ff cmp rax,0xfffffffffffff001
d: 0f 83 00 00 00 00 jae 13 <sync+0x13>
13: c3 ret
我在这是什么做的有点混乱。 mov eax,0xa2
是什么点,为什么不是rax
寄存器被使用,如果这是一个64位机器(系统调用如何知道系统调用)?简而言之,这5行代码是做什么的?
为什么你说“'mov rax,0xa2'等价于'mov rax,0xa2',你的意思是:'mov eax,0xa2'等价于'mov rax,0xa2'? – 2013-12-12 14:34:32
@VilhelmGray:良好的捕获,将解决它! – 2013-12-12 14:46:40
我在我的评论中也遇到了自己的错字:“为什么”应该是“何时”。 :-P – 2013-12-12 16:09:12