寄存器指南
RISC-V fa5 / f15 浮点参数寄存器寄存器
f15/fa5 是浮点寄存器,用于 F/D/Q/Zfh 等浮点指令保存操作数、结果或函数浮点参数。
ABI 名称:fa5;物理寄存器:f15。
保存责任:调用者。
先按 psABI 角色理解它,再看具体指令如何读写。
物理编号 f15ABI 名 fa5保存责任 调用者
角色
浮点参数寄存器
调用约定
调用者保存
先记一句
t* 属于 caller-saved,callee 可以覆盖。
psABI 规范依据
ABI 寄存器
f15/fa5 是浮点寄存器,用于 F/D/Q/Zfh 等浮点指令保存操作数、结果或函数浮点参数。
调用后保持:调用者
RISC-V psABI integer register convention适合什么时候用
- - 保存短生命周期临时计算结果。
- - 在不会跨函数调用存活的局部计算里使用。
- - 作为 caller 自行管理的 scratch register。
什么时候不要这样用
- - 不要把 t* 用来保存 call 之后还要用的值,除非调用前自己保存。
- - 不要把 t* 当成 callee 会帮你恢复的寄存器。
调用前后会发生什么
1
t* 属于 caller-saved,callee 可以覆盖。
2
如果 caller 在 call 后还需要 t* 的值,caller 必须提前保存。
临时值跨 call 前先自保
示例用于理解规则,不替代完整程序addi t0, a0, 1
# 如果 call 后还要用 t0,caller 先保存到 ABI 合法的位置
call foo
# call 返回后再从该保存位置恢复 t0