三种操作数
在本教程中,我们只关心整数寄存器和XMM寄存器,您应该已经知道寄存器是什么,快速回顾。
R0,R1...R15
RAX,累加器
RCX,计数器
RDX,除法余数
RBX,基地址
RSI,RDI 字符串寄存器
RSP,RBP, 栈寄存器
请注意,其中8个寄存器具有备用名称,您可以将每个寄存器的最低32位视为寄存器本身,但是使用以下名称。
R0D,R1D,R2D,...R15D
EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI
您可以将每个寄存器的最低16位视为寄存器本身,使用以下名称
R0W,R1W,R2W, ...R15W
AX,CX,DX,BX,SP,BP,SI,DI
您可以将每个寄存器的最低8位视为寄存器本身,但是使用以下名称
R0B,R1B,..R15B
AL,CL,DL,...DIL
由于历史原因,R0..的第15位到第8位R3被命名位
SSE寄存器,XMM0-XMM7:SSE整型寄存器
YMM0-YMM7 avx256寄存器
ZMM0-ZMM7 avx512 寄存器
MMX寄存器与ST寄存器的关系,这些寄存器是浮点寄存器ST0-ST7的一部分,
3.2 x86架构64位模式寄存器
16个64位通用寄存器
RAX/RBX/RCX/RDX/RSI/RDI/RBP/RSP/ R8~R15
4个段相关的寄存器。
cs 为代码段寄存器,一般用于存放代码;
通常和IP 使用用于处理下一条执行的代码
cs:IP
基地址:偏移地址
cs地址对应的数据 相当于c语言中的代码语句
ds 为数据段寄存器,一般用于存放数据;
ds地址对应的数据 相当于c语言中的全局变量
ss 为栈段寄存器,一般作为栈使用 和sp搭档;
ss地址对应的数据 相当于c语言中的局部变量
ss相当于堆栈段的首地址 sp相当于堆栈段的偏移地址
es 为扩展段寄存器;
8个64位MMX寄存器 MM0~MM7

flags寄存器说明