MIPS 有什么理由不使用 li 而不是 lw 来存储整数、浮点数、双精度数?

MIPS Any reason not to use li instead of lw for storing ints,floats,doubles?

我看到人们将 lw 和 li 用于相同的目的,即在寄存器中存储和操作数字。但在什么情况下,哪一个最合适? 谢谢。

I see people using lw and li for the same purpose

他们的目的不同。 lw的目的是l从内存中加载一个word(32位)到寄存器中。例如:

.data
foo: .word 12345
.text
la $a0, foo     # $a0 = address of foo
lw $t0, ($a0)   # $t0 = 12345

li的目的是l加载一个immediate到一个寄存器中。例如:

li $t0, 12345   # $t0 = 12345

请注意,MIPS 指令集实际上并不包含任何 li 指令。它是由汇编程序实现的伪指令,它将把它转换成一个或多个实际指令(例如 luiori 的组合)。