【问题标题】:What does "%hi(__gnu_local_gp)" mean in MIPS assembly?MIPS 汇编中的“%hi(__gnu_local_gp)”是什么意思?
【发布时间】:2017-04-04 01:34:13
【问题描述】:

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

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

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

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

【问题讨论】:

  • 该指令只是将常量 gnu_local_gp 的低位和高位字写入立即寄存器。

标签: mips disassembly


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2011-01-20
    • 2011-04-18
    • 1970-01-01
    • 2016-06-18
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多