三种操作数
在本教程中,我们只关心整数寄存器和XMM寄存器,您应该已经知道寄存器是什么,快速回顾。
R0,R1...R15
RAX,累加器
RCX,计数器
RDX,除法余数
RBX,基地址
RSI,RDI 字符串寄存器
- %rdi,%rsi,%rdx,%rcx,%r8,%r9 用作函数参数,依次对应第1参数,第2参数。。。。当参数超过6个时,参数会向地址压栈。
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
- 16个128位XMM寄存器:XMM0~XMM15
- 16个256位YMM寄存器:YMM0~YMM15(仅AVX指令集使用)
- 32个512位ZMM寄存器 : ZMM0~ZMM31(仅AVX512指令集使用)
- 用gdb打印寄存器的数据值

flags寄存器说明

本文介绍了x86架构64位模式下的16个通用寄存器、4个段相关寄存器、SSE及AVX寄存器,并详细阐述了它们在函数调用、数据处理和浮点运算中的作用。同时,提到了寄存器的不同位宽表示以及在编程中的别名。此外,还涵盖了flags寄存器的功能。
2892

被折叠的 条评论
为什么被折叠?



