【问题标题】:Instruction format of li (load immediate) in MIPS 32-bit?MIPS 32位中li(立即加载)的指令格式?
【发布时间】:2020-07-26 12:35:40
【问题描述】:

我正在使用 MIPS 32 位,只是对 li 指令中立即数的最大位数感到好奇。我在网上搜索了一下,结果不一致,有人说立即数字段的最大位数可能是 1632两者都。据我了解,li 指令遵循 I 指令格式,因此,在 MIPS 32 位中,立即数应该只有 16 位。有人可以告诉我这种思维方式是否错误并帮助我澄清它吗?

【问题讨论】:

  • 你是对的。 I-Type 指令有一个 16 位立即数。要获得更多信息,您需要多个说明。
  • 嗨,在 MIPS 32 位中,li 指令遵循 I 格式,对吗?
  • 是的:li 是一个伪指令,汇编器会将其转换为 addi $target, $0, value,这是一个 I-Type(或其他等效的,任何其他 I-Type,如 ori) .

标签: mips mips32


【解决方案1】:

li 是 MIPS-32 汇编器支持的伪指令,而不是“真正的”指令。所以汇编器实际上为li“指令”生成了两条指令——一条lui指令设置目标的高16位,然后是一条ori指令设置低位16 位。

如果你试图把它放在一个分支延迟槽中,它是一个伪指令这一事实很重要——它实际上不会正常工作;如果分支被占用,你只会得到lui 的一半。大多数汇编程序都会对此发出警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2020-10-23
    • 2019-08-12
    • 1970-01-01
    • 2016-04-29
    • 2016-02-23
    • 2014-08-03
    相关资源
    最近更新 更多