如何在不使用 LUI 的情况下将 32 位常量加载到寄存器

How to load 32 bit constant to a register without using LUI

我正在尝试加载一个 32 位常量 0x1234ABCD 以在 MIPS 程序集中注册 $t0。但是,我无法使用 lui 来这样做。我的直觉是使用两个 addi,但我不确定该怎么做。我必然需要 2 或更多才能获得 32 位信息。我需要在没有 lui 的情况下以某种方式设置高位。在不使用的情况下复制 lui 的好方法是什么?

例如,您可以使用 ori 结合 sll 在 3 条指令中加载 32 位常量,而无需使用 lui:

  ori $t1, $zero, 0x1234  # load the upper half in the lower bits of $t1
  sll $t1, $t1, 16        # move them to the upper half
  ori $t1, $t1, 0xABCD    # combine with the lower half