lga

RISC-V lga 伪指令详解

汇编器伪指令

RISC-V lga rd, symbol 是加载全局符号地址的汇编器伪指令。它使用 AUIPC 加 GOT 加载;文档示例在 RV64 使用 ld,在 RV32 使用 lw。

你写下的是
lga rd, symbol
常见真实展开
auipc rd, symbol@GOT[31:12] l{w|d} rd, symbol@GOT[11:0](rd)

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

RISC-V Assembly Programmer's Manual将 lga 定义为加载全局地址的伪指令,并给出 GOT 间接加载序列。

展开过程怎么理解

步骤 1
AUIPC 形成 GOT 相关的高位 PC 相对部分。
步骤 2
随后 l{w|d} 通过该寄存器加载地址;RV32 使用 lw,RV64 使用 ld。

汇编写法与真实指令

按页面所列的 AUIPC 与 GOT 加载序列阅读该写法。

官方依据与阅读顺序

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

什么时候优先想到它

阅读或编写 lga rd, symbol 的全局地址写法。

容易混淆 / 常见误区

文档示例在 RV64 使用 ld,在 RV32 使用 lw。
GOT 与重定位是 psABI 的链接约定,不是 AUIPC 的硬件行为。

常见问题

lga 的 RV32 与 RV64 加载有何区别?

RISC-V Assembly Programmer's Manual示例在 RV64 使用 ld,在 RV32 使用 lw。