Chi*_*ins 4 x86-64 system-calls
我正在Linux上学习x86_64程序集,我遇到了一些我希望可以解决的冲突信息.一方面,我已经读过,对于syscall参数,你会按照rdi,rsi,rdx等顺序使用寄存器.但另一方面,我读过你使用寄存器rbx,rcx,rdx等.一个人告诉我,这是因为ABI的原因,但我并不完全明白这究竟意味着什么.
所以我想我要问的是,为什么这两种格式和哪种格式适合使用?
谢谢!
根据这个Wikibooks页面,它取决于您使用哪条指令来执行系统调用.
如果你正在使用int $0x80,那么你应该使用eax的系统调用号,和ebx,ecx,edx,esi,edi,和ebp为参数(按顺序).
如果您使用的syscall指令,你应该使用rax的系统调用号和rdi,rsi,rdx,r10,r8,和r9为参数.
我认为使用syscall是首选,因为它更快.
| 归档时间: |
|
| 查看次数: |
1447 次 |
| 最近记录: |