la
RISC-V la 伪指令详解
汇编器伪指令RISC-V la 伪指令在 RISC-V Assembly Programmer's Manual 中按 .option nopic 或 .option pic 选择不同展开:前者为 AUIPC 加 ADDI,后者为 AUIPC 加经 GOT 的 l{w|d}。
你写下的是
la rd, symbol
常见真实展开
.option nopic
auipc rd, symbol[31:12]
addi rd, rd, symbol[11:0]
.option pic
auipc rd, symbol@GOT[31:12]
l{w|d} rd, symbol@GOT[11:0](rd)
这条伪指令到底在帮你省什么
la 会根据 .option nopic 或 .option pic 选择不同的地址加载序列。
展开过程怎么理解
步骤 1
.option nopic 使用 AUIPC 后接 ADDI。
步骤 2
.option pic 使用 AUIPC 后接经 symbol@GOT 的 l{w|d}。
官方依据与阅读顺序
本页把伪指令当作汇编器层面的别名或宏来解释:先看它会展开成哪些真实指令,再回到官方 ISA 手册理解真实指令的行为。涉及 ABI、重定位或链接器松弛时,以 psABI 文档为准。
容易混淆 / 常见误区
.option nopic 与 .option pic 对应不同的 LA 展开,不应把其中一种当作无条件通用展开。
常见问题
la 只有一种展开吗?
没有。RISC-V Assembly Programmer's Manual 分别列出 .option nopic 和 .option pic 的 LA 序列。