创客孙老师
创客孙老师
发布于 2025-04-15 / 0 阅读
0
0

ISC-V架构通用寄存器

64位/32位的RISC-V体系结构提供32个64位/32位的整型通用寄存器,分别是x0~x31寄存器,如下图所示。对于浮点数运算,64位的RISC-V体系结构也提供32个浮点数通用寄存器,分别是f0~f31寄存器。RISC-V的通用寄存器通常具有别名和特殊用途,在书写汇编指令时可以直接使用别名。

RISC-V架构通用寄存器

为了便于记忆,下面的表格是各个寄存器的解释:

寄存器编号 寄存器名称 英文全称 含义 用途
x0 zero 硬连线零 该寄存器的值始终为 0,用于一些需要常量 0 的操作,如 addi x1, zero, 10 可将立即数 10 加载到 x1 寄存器中。
x1 ra Return Address 返回地址寄存器 保存函数调用的返回地址,用于函数调用和返回机制。
x2 sp Stack Pointer 栈指针 指向当前栈帧的栈顶,用于管理栈空间,在函数调用时保存和恢复局部变量等。
x3 gp Global Pointer 全局指针 指向全局变量区的基地址,方便快速访问全局变量。
x4 tp Thread Pointer 线程指针 指向当前线程的数据区域,可用于多线程编程中快速访问线程特定的数据。
x5 - x7 t0 - t2 Temporary Registers 临时寄存器 用于临时存储数据,在函数调用过程中不需要被调用者保存和恢复。
x8 s0/fp Saved Register / Frame Pointer 保存寄存器 / 帧指针 通常作为帧指针,指向当前栈帧的底部,也可用于保存需要跨函数调用保留的值。
x9 s1 Saved Register 保存寄存器 用于保存需要跨函数调用保留的值,在函数调用过程中由调用者负责保存和恢复。
x10 - x11 a0 - a1 Argument Registers 参数寄存器 用于传递函数调用的前两个参数。
x12 - x17 a2 - a7 Argument Registers 参数寄存器 用于传递函数调用的第 3 到第 8 个参数。
x18 - x27 s2 - s11 Saved Registers 保存寄存器 用于保存需要跨函数调用保留的值,在函数调用过程中由调用者负责保存和恢复。
x28 - x31 t3 - t6 Temporary Registers 临时寄存器 用于临时存储数据,在函数调用过程中不需要被调用者保存和恢复。

评论