X86_64 寄存器介绍(不断补充中)

本文详细介绍了x86-64架构中的通用寄存器(如RAX、RBX、RCX等)及其功能,包括累加器、基址、计数、数据和变址寄存器,以及浮点寄存器和RIP指令指针的作用。同时涵盖了RBP/RSP在函数调用栈管理中的角色。
摘要由CSDN通过智能技术生成

目录

一、通用寄存器

二、浮点寄存器

三、其他寄存器


一、通用寄存器

  • RAX: accumulator register, 累加寄存器,通常用于存储函数的返回值,它主要用于输入/输出和大规模的指令运算,AX 寄存器可以说是使用频率最高的寄存器。也可以用于存储其他值,只是通过RAX存储函数返回值属于惯例。
  • RBX: base register,基址寄存器,一般用于访问内存的基址。BX也被称为数据寄存器,即表明其能够暂存一般数据,同样也可以将BX当做两个独立的 8位寄存器使用即 BH 和BL。BX除了具有暂存数据的功能之外,还用于寻址(即寻找物理地址),这就是为什么将其称为基址寄存器,它存放的数据一般就用来作为偏移地址使用,因为偏移地址是相对于基址地址上的偏移。
  • RCX: counter register,计数寄存器。一般用于循环计数。也可以称为数据寄存器,能够暂存一般性数据,可以分为CH 和CL。它也有专门功能:即计数器功能,当汇编指令使用循环LOOP时,可以通过CX来指定需要循环的次数。
  • RDX: 数据寄存器,能够暂存一般性数据。
  • RSI: source index,源变址寄存器,字符串运算时常应用于源指针。
  • RDI: destination index,目标变址寄存器,字符串运算时常用于目标指针。
  • RBP: Stack Pointer,栈指针寄存器。它包含了当前栈顶的内存地址。在函数调用时,参数、局部变量和返回地址等数据都存储在栈中。RSP的值在函数调用时会发生变化,以便为这些数据分配空间。通过修改 RSP 的值,可以在栈上分配空间或释放空间。
  • RSP: Base Pointer,基址指针寄存器。它通常用于指向当前栈帧的基址,即指向当前函数的栈帧的起始位置。在函数中,局部变量和其他数据可以通过 RBP 来访问。RBP 的值在函数调用时保持不变,因此可以作为一个固定的参考点来访问栈上的数据。RBP和RSP寄存器在 x86-64 架构中用于管理函数调用栈,分别指向当前函数的栈帧基址和栈顶。
  • RIP: Instruction Pointer,指令指针寄存器。它包含了将要执行的下一条指令的内存地址。当处理器执行指令时,会不断更新 RIP 的值,以便指向下一条将要执行的指令。RIP 的值的变化是由控制转移指令(如函数调用、跳转指令等)来控制的。
  • R8-R15: 一般是可以任意使用的,不指定特定用途,支持拆分。

二、浮点寄存器

三、其他寄存器

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值