tail

RISC-V tail 伪指令详解

汇编器伪指令

tail symbol 是对远距离子程序的尾调用伪指令。默认基础指令为 auipc x6, offset[31:12] 与 jalr x0, x6, offset[11:0];启用 Zicfilp 时使用 x7 作为暂存寄存器。

你写下的是
tail symbol
常见真实展开
auipc x6, offset[31:12] jalr x0, x6, offset[11:0]

这条伪指令到底在帮你省什么

tail 用于对远距离子程序进行尾调用,并使用 AUIPC 与 JALR 计算和跳转到目标。

展开过程怎么理解

步骤 1
AUIPC 先以 auipc x6, offset[31:12] 计算远距离目标的高位部分。
步骤 2
随后以 jalr x0, x6, offset[11:0] 跳转且不保存返回地址;启用 Zicfilp 时使用 x7 作为暂存寄存器。

官方依据与阅读顺序

本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。

容易混淆 / 常见误区

默认暂存寄存器是 x6;启用 Zicfilp 时使用 x7。

常见问题

tail 是独立的 RISC-V 硬件指令吗?

不是。tail symbol 是汇编器伪指令,基础指令为 AUIPC 与 JALR。