假设$z0
是一个始终包含数字零的寄存器。
然后,MIPS指令OR $t0, $t1, $t2
将OR
和$t1
的按位$t2
放入寄存器$t0
。
假设寄存器$t2
包含数字" 5"。执行指令后的寄存器$t0
或$ t0,$ z0,$ t1
这是模拟试卷中的一个问题,但我对如何解决这个问题感到困惑。我真的需要帮助。我该如何解决它?我无法弄清楚t1的值我知道按位OR是如何工作的
答案 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