在 MIPS 中使用 ori 和 addi 初始化一个值有什么区别?

What's the difference between using ori and addi to initialize a value in MIPS?

当我想在 MIPS 中的地址中存储一个值时,例如 $a0 中的值 3,我通常只使用 addi $a0, $0, 3。有时我看到人们使用 ori $a0, $0 , 3. 一个比另一个好吗?有什么区别?

两者之间有一些细微的差别:

ADDI:

  • 符号-扩展立即数。
  • 可能导致整数溢出异常(可以通过使用 ADDIU 来避免)。

ORI:

  • -扩展立即数。
  • 不易受整数溢出的影响。