assembly - 这部分MIPS代码中使用ori有什么用?

标签 assembly mips

有人可以在这里解释“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/

相关文章:

string - 此 x86 汇编代码如何创建字符串?

algorithm - mips汇编保存数据的方法

mips - MIPS中的浮点寄存器是几号寄存器?

c - 如何确定程序集正在调用的地址中的内容

c - 汇编级函数指纹

c++ - MIPS 汇编中的 C 数组索引?

memory - 缓存寻址 : Length of Index, block 偏移、字节偏移和标记?

cpu - MIPS 中的注册文件转发

c - 创建一个头文件来扫描整数而不使用 stdio.h(scanf)

assembly - 我们如何在汇编代码 (MIPS) 中取消引用指针?