寄存器指南

RISC-V fa1 / f11 浮点参数/返回值寄存器寄存器

f11/fa1 是浮点寄存器,用于 F/D/Q/Zfh 等浮点指令保存操作数、结果或函数浮点参数。

ABI 名称:fa1;物理寄存器:f11。
保存责任:调用者。
先按 psABI 角色理解它,再看具体指令如何读写。
物理编号 f11ABI 名 fa1保存责任 调用者
角色
浮点参数/返回值寄存器
调用约定
调用者保存
先记一句
t* 属于 caller-saved,callee 可以覆盖。
psABI 规范依据

ABI 寄存器

f11/fa1 是浮点寄存器,用于 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