有人可以在这里解释“ori”的用法吗?我知道它是按位或,但我不知道它是如何工作的,也不知道为什么这里需要它。
#objective of the program is to add 5 and 7
.data #variable declaration follow this line
.text #instructions follow this line
main:
ori $s0, $zero, 0x5
ori $s1, $zero, 0x7
add $t0, $s0, $s1
li $v0,10 # required for only QtSPIM
syscall # required for only QtSPIM
#end of program
最佳答案
ori $s0, $zero, 0x5
ori $s1, $zero, 0x7
这两条指令将常量 0x05 加载到寄存器 $s0 中,将 0x07 加载到寄存器 $s1 中。
MIPS 没有直接将常量加载到寄存器中的指令。因此,操作数为零且立即数的逻辑 OR 用作替换。它具有与移动相同的效果。将这两行转换为 c 样式代码是:
$s0 = 0 | 0x05;
$s1 = 0 | 0x07;
您还可以使用:
addi $s0, $zero, 0x5
addi $s1, $zero, 0x7
这做同样的事情,但使用添加而不是逻辑或。翻译成代码就是这样。
$s0 = 0 + 0x05;
$s1 = 0 + 0x07;
关于assembly - 这部分MIPS代码中使用ori有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25301769/