10.3. 位置无关代码

10.3.1. la 伪指令

10.3.1.1. 指令详解

la(Load Address)系列伪指令用于把符号地址装入通用寄存器,常用于获取数据地址或函数地址。其格式及常见变体如下:

la          rd, symbol    # 等价于 la.global(默认行为)
la.global   rd, symbol    # 加载全局符号地址(可能经过GOT,默认模式)
la.local    rd, symbol    # 加载局部符号地址(PC相对寻址)
la.got      rd, symbol    # 经GOT(全局偏移表)加载符号地址
la.pcrel    rd, symbol    # PC相对寻址加载地址
la.abs      rd, symbol    # 绝对地址加载

汇编器会结合地址范围和寻址模式,自动生成合适的实际指令序列。