MIPS 汇编中的“%hi(__gnu_local_gp)”是什么意思?

What does "%hi(__gnu_local_gp)" mean in MIPS assembly?

我正在学习 MIPS,所以我写了一个简单的 C 程序并用 gcc 生成了 MIPS 程序集,里面有这部分

lui     ,%hi(__gnu_local_gp)
addiu   ,,%lo(__gnu_local_gp)

我知道 lui 的意思是 load upper immediate 但我不知道 %hi(__gnu_local_gp)%lo(__gnu_local_gp) 是什么意思; addiu 表示 添加立即无符号数 .

lohi是寄存器吗?
如果是,% 是什么意思?

指令将符号__gnu_local_gp的地址加载到寄存器28中。 __gnu_local_gp是一个内存位置,用来存放Global Pointer,寄存器28通常用来存放全局指针。

'%hi'和'%lo'是GNU汇编程序的内置函数,与MIPS架构中的hilo寄存器无关。