💡
原文中文,约1800字,阅读约需5分钟。
📝
内容提要
本文总结了x64架构下核心寄存器的状态与ABI约定,包括通用寄存器的用途、调用约定及关键状态标志。寄存器向下兼容,低32位写入会清零高32位,调用者与被调用者需管理寄存器值。系统调用和参数传递顺序在不同平台上有所不同。
🎯
关键要点
- 本文总结了x64架构下核心寄存器的状态与ABI约定。
- x64寄存器向下兼容,低32位写入会清零高32位。
- 通用寄存器(GPRs)的用途包括返回值、基址、循环计数、I/O等。
- Caller Saved寄存器需由调用者在调用前保存,Callee Saved寄存器需由被调用者在返回时恢复。
- System V AMD64 ABI的参数传递顺序为RDI, RSI, RDX, RCX, R8, R9,超过6个参数需压入栈。
- Microsoft x64的参数传递顺序为RCX, RDX, R8, R9,超过4个参数需压入栈,并需预留32字节的Shadow Space。
- 返回值在RAX寄存器中,若结果为128位,高位在RDX。
- 关键状态标志包括ZF(零标志)、SF(符号标志)、OF(溢出标志)、CF(进位标志)。
➡️