3.4 基本的程序执行寄存器
IA-32中提供了16个常见的寄存器:
- 8个32位的通用寄存器:用于存储操作数和指针
- 数据寄存器:EAX、EBX、ECX、EDX
- EAX-操作数和结果数据的累加器
- EBX-指向DS段中数据的指针,基址寄存器
- ECX-字符串和循环操作的计数器
- EDX-I/O指针
- ESI—指向DS寄存器指向的段中数据的指针;字符串操作的源指针
- EDI—指向ES寄存器指向的段中的数据(或目标)的指针;字符串操作的目标指针
- ESP-堆栈指针(在SS段中)
- EBP-指向堆栈上数据的指针(在SS段中)
- 6个段寄存器
- CS:代码段
- DS:数据段
- SS:堆栈段
- ES :附加段
- 程序状态和控制寄存器(EFLAGS):程序状态字(PSW)
- 指令指针寄存器(EIP)
通用寄存器又可以按低地址、高地址进行细分:
64位模式
在64位模式下,有16个通用寄存器,默认操作数大小为32位。但是,通用寄存器可以使用32位或64位操作数。
如果指定了32位操作数大小:EAX、EBX、ECX、EDX、EDI、ESI、EBP、ESP、R8D-R15D可用。
如果指定了64位操作数大小:RAX、RBX、RCX、RDX、RDI、RSI、RBP、RSP、R8-R15可用。
R8D-R15D/R8-R15代表八个新的通用寄存器。
所有这些寄存器都可以在字节、字、dword和qword级别访问。
REX前缀用于生成64位操作数大小或引用寄存器R8-R15。