有人可以在这里解释“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
Run Code Online (Sandbox Code Playgroud)
ori $s0, $zero, 0x5
ori $s1, $zero, 0x7
Run Code Online (Sandbox Code Playgroud)
这两条指令将常量 0x05 加载到寄存器 $s0 中,将 0x07 加载到寄存器 $s1 中。
MIPS 没有直接将常量加载到寄存器中的指令。因此,操作数为零且立即数的逻辑 OR 用作替换。它具有与移动相同的效果。将这两行转换为 c 样式代码是:
$s0 = 0 | 0x05;
$s1 = 0 | 0x07;
Run Code Online (Sandbox Code Playgroud)
您还可以使用:
addi $s0, $zero, 0x5
addi $s1, $zero, 0x7
Run Code Online (Sandbox Code Playgroud)
这做同样的事情,但使用添加而不是逻辑或。翻译成代码就是这样。
$s0 = 0 + 0x05;
$s1 = 0 + 0x07;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23579 次 |
| 最近记录: |