寄存器指南

RISC-V t3 / x28 临时变量寄存器

临时寄存器3(x28)。标准 psABI 将 t3 标记为调用后不保持。

ABI 名称:t3;物理寄存器:x28。
保存责任:调用后不保持。
先按 psABI 角色理解它,再看具体指令如何读写。
物理编号 x28ABI 名 t3保存责任 调用后不保持
角色
临时变量
调用约定
调用后不保持
先记一句
t3 是标准 psABI 的临时寄存器,调用后不保持。
psABI 规范依据

临时寄存器

psABI 将 t0-t6 标记为临时寄存器。它们不是 callee-saved;调用者如果需要跨调用保留其中的值,必须自己保存。

调用后保持:否
RISC-V psABI integer register convention
快速理解与检索要点

t3 / x28 属于 t0-t6 临时寄存器组。psABI 规定它调用后不保持;调用者如果需要跨调用保留其中的值,必须自己保存。

t0-t6 是临时寄存器,调用后不保持。
跨调用仍需使用 t3 的值时,caller 必须自行保存。

适合什么时候用

  • - 按标准 psABI 将 t3 识别为调用后不保持的临时寄存器。
  • - 过程退出时,未指定为返回值或调用后保持寄存器的内容未指定。
  • - 临时寄存器分类不规定具体的调用序列或保存位置。

什么时候不要这样用

  • - 不要假定 t3 的调用前值在调用后仍可用。
  • - 不要把 temporary 这一 psABI 分类说成硬件特殊行为。

调用前后会发生什么

1

t3 是标准 psABI 的临时寄存器,调用后不保持。

2

未指定为返回值或调用后保持寄存器的内容在过程退出时未指定。

3

该规则适用于标准调用约定。

t3 的标准 psABI 规则

示例用于理解规则,不替代完整程序
# t3:调用后不保持的临时寄存器
# 适用范围:标准 psABI 调用约定

常见问题

t3 / x28 调用后会保持吗?

不会。t0-t6 是临时寄存器,调用后不保持。

跨 call 还需要 t3 的值怎么办?

caller 必须在调用前把它保存到栈或其他合适位置,并在调用后恢复。