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。