x86-64CPU寄存器介绍

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

三种操作数

在本教程中,我们只关心整数寄存器和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寄存器说明

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值