Assembly MIPS逻辑或指令如何工作?

Assembly MIPS逻辑或指令如何工作?,assembly,mips,Assembly,Mips,假设$z0是一个始终包含数字零的寄存器 然后MIPS指令或$t0、$t1、$t2将$t1和$t2的按位或放入寄存器$t0 假设寄存器$t2包含数字“5”。执行指令或$t0、$z0、$t1后,寄存器中有什么 这是一个模拟试卷上的问题,但我不知道该怎么做。我真的需要帮助。我将如何着手解决它?如果您想知道为什么寄存器0($z0)经常在OR指令中使用,我很难计算t1的值我知道OR是如何按位工作的: OR $xx, $z0, $yy OR $xx, $z0, $yy ADD $xx, $z0, $yy

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

然后MIPS指令
或$t0、$t1、$t2
$t1
$t2
的按位
放入寄存器
$t0

假设寄存器
$t2
包含数字“5”。执行指令或$t0、$z0、$t1后,寄存器中有什么


这是一个模拟试卷上的问题,但我不知道该怎么做。我真的需要帮助。我将如何着手解决它?如果您想知道为什么寄存器0($z0)经常在OR指令中使用,我很难计算t1的值我知道OR是如何按位工作的:

OR $xx, $z0, $yy
OR $xx, $z0, $yy
ADD $xx, $z0, $yy
ADDU $xx, $z0, $yy
ADDI $xx, $yy, #0
SUB $xx, $yy, $z0
...
具有将寄存器yy的内容复制到寄存器zz的效果

在其他处理器上,这是使用MIPS处理器上不存在的“MOVE”指令完成的。汇编程序将替换

MOVE $xx, $xx
(在MIPS处理器上不存在)执行以下指令之一:

OR $xx, $z0, $yy
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位数字),并逐位处理数字(而不是完整数字)

如果两个“输入”位均为0,则OR指令给出的结果为0;如果至少有一个输入位为1,则OR指令给出的结果为1

例如:

OR t3, t1, t2

t1 = 0x1234
t2 = 0x6789

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

t3 = 0x77BD

您知道按位
的工作原理吗?描述一下你做了什么,在哪里被卡住了。另外,请编辑您的问题并给它一个有意义的标题。我进行编辑是为了改进问题格式,但是如果没有
$t1
的初始值,很难判断结果会是什么。这正是我的问题,我无法计算出t1的值,因此我得到了Stuck它将是
$t1
的值,但是由于位0和2是无条件设置的,它为什么会这样做呢?如果可能的话,你能解释一下吗