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
指令。它是由汇编程序实现的伪指令,它将把它转换成一个或多个实际指令(例如 lui
和 ori
的组合)。
我看到人们将 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
指令。它是由汇编程序实现的伪指令,它将把它转换成一个或多个实际指令(例如 lui
和 ori
的组合)。