Register

Register

X86_64 Registers

在x86-64架构中,16个通用寄存器的英文全称和功能确实可以帮助记忆。以下是它们的详细解析,按用途分类整理:

通用数据寄存器(Data Registers)

寄存器 全称 主要用途
RAX Accumulator Register 累加器,用于算术运算和返回值
RBX Base Register 基址寄存器,常用于内存寻址
RCX Counter Register 循环/字符串操作计数器
RDX Data Register 存储数据或I/O端口操作

扩展名:

  • 32位:EAX (Extended Accumulator)
  • 16位:AX (Accumulator)
  • 8位:AH/AL (High/Low byte)

指针/索引寄存器(Pointer/Index Registers)

寄存器 全称 主要用途
RSP Stack Pointer 栈顶指针(函数调用/返回)
RBP Base Pointer 栈帧基址(局部变量定位)
RSI Source Index 字符串/数组操作的源地址
RDI Destination Index 字符串/数组操作的目标地址

扩展名:

  • 32位:ESP/ESI/EDI
  • 16位:SP/SI/DI

扩展寄存器(Extended Registers, R8-R15)

寄存器 全称 主要用途
R8 Register 8 通用数据存储
R9 Register 9 函数第5个参数(Linux调用约定)
R10 Register 10 临时寄存器
R11 Register 11 临时寄存器
R12 Register 12 全局数据指针
R13 Register 13 通用数据存储
R14 Register 14 通用数据存储
R15 Register 15 通用数据存储

扩展名:

  • 32位:R8D-R15D
  • 16位:R8W-R15W
  • 8位:R8B-R15B

指令指针寄存器(Control Register)

寄存器 全称 作用
RIP Instruction Pointer 存储下一条指令地址(不可直接修改)

标志寄存器(Flags Register)

寄存器 全称 作用
RFLAGS Flags Register 存储CPU状态标志(如ZF、CF)

记忆技巧

  1. 按功能分组:
  • 前8个(RAX-RDI)是经典寄存器,后8个(R8-R15)是扩展寄存器。
  • RSP/RBP管栈,RSI/RDI管数据搬运。
  1. 联想英文全称:
  • RAX(Accumulator)像“累加器”,RCX(Counter)用于循环计数。
  • RSP(Stack Pointer)直指“栈顶”。
  1. 调用约定关联:
  • Linux系统调用中,RAX存调用号,RDI/RSI/RDX/RCX/R8/R9传参。

示例代码(Linux调用约定)

mov rax, 1          ; 系统调用号1 (sys_write)
mov rdi, 1 ; 文件描述符1 (stdout)
mov rsi, msg ; 字符串地址
mov rdx, len ; 字符串长度
syscall ; 触发系统调用