目录
一、通用寄存器
- 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: 一般是可以任意使用的,不指定特定用途,支持拆分。