寄存器指南

RISC-V t2 / x7 临时变量寄存器

临时寄存器2(x7)。psABI 将 t2 归为 temporary register,调用后不保证保留其值。

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

临时寄存器

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

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

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

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

适合什么时候用

  • - 按标准 psABI 将 t2 识别为调用后不保持的临时寄存器。
  • - 过程退出时,未指定为返回值或调用后保持寄存器的内容未指定。
  • - RISC-V Assembly Programmer's Manual 将 tail 的隐式 scratch 寄存器列为 t2,但仅在 Zicfilp 可用时。

什么时候不要这样用

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

调用前后会发生什么

1

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

2

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

3

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

t2 的标准 psABI 规则

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

常见问题

t2 / x7 调用后会保持吗?

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