4.4. x64¶
4.4.1. 常用寄存器¶
- RAX
易失的
返回值寄存器
- RCX
易失的
第一个整型参数
- RDX
易失的
第二个整型参数
系统调用的第三个参数
- R8
易失的
第三个整型参数
- R9
易失的
第四个整型参数
- RDI
非易失的
必须由被调用方保留
系统调用的第一个参数
- RSI
非易失的
必须由被调用方保留
系统调用的第二个参数
- RBX
非易失的
必须由被调用方保留
- RBP
非易失的
可用作帧指针;必须由被调用方保留
- RSP
非易失的
堆栈指针
- R8
系统调用的第五个参数
- R9
系统调用的第六个参数
- R10-R11
易失的
必须根据需要由调用方保留
在 syscall/sysret 指令中使用
R10为系统调用的第四个参数
- R12-R15
非易失的
必须由被调用方保留
4.4.2. 系统调用号¶
需要注意的是,x86和x64架构下系统调用号并不相同。系统调用可在 /usr/include/asm/unistd.h
文件中查看。