MIPS逻辑OR指令如何工作?

时间:2014-05-07 23:47:25

标签: assembly mips

假设$z0是一个始终包含数字零的寄存器。

然后,MIPS指令OR $t0, $t1, $t2OR$t1的按位$t2放入寄存器$t0

假设寄存器$t2包含数字" 5"。执行指令后的寄存器$t0或$ t0,$ z0,$ t1

这是模拟试卷中的一个问题,但我对如何解决这个问题感到困惑。我真的需要帮助。我该如何解决它?我无法弄清楚t1的值我知道按位OR是如何工作的

1 个答案:

答案 0 :(得分:2)

如果您想知道为什么寄存器0($ z0)经常用于OR指令:

OR $xx, $z0, $yy

具有将寄存器yy的内容复制到寄存器zz的效果。

在其他处理器上,使用" MOVE" MIPS处理器上不存在的指令。汇编程序将替换

MOVE $xx, $xx

(MIPS处理器上并不存在)通过以下指令之一:

OR $xx, $z0, $yy
ADD $xx, $z0, $yy
ADDU $xx, $z0, $yy
ADDI $xx, $yy, #0
SUB $xx, $yy, $z0
...

所有这些指令只是将寄存器yy的值复制到寄存器xx。

- 编辑 -

您想知道OR指令的工作原理:

OR指令是按位指令。这意味着:取两个具有相同位数(例如两个32位数)的数字,并逐位处理数字(而不是完整数字)。

如果"输入"则OR指令给出结果0。如果至少一个输入位为1,则位为0和1。

示例:

OR t3, t1, t2

t1 = 0x1234
t2 = 0x6789

t1 = 0001001000110100 (binary)
t2 = 0110011110001001 (binary)
---------------------
t3 = 0111011110111101 (binary)

t3 = 0x77BD