MIPS - 汇编BEQ命令

时间:2014-08-07 21:10:13

标签: assembly mips

我已复制了MIPS - Aseembly上的作业图片。

我理解(我认为)代码中会发生什么,直到这一行:

beq $11, $0, 3

我知道代码现在为地址创建了一个PC-RELATIVE分支:

PC+4+3*4 

但我不明白这段代码是如何发生的 - 下一行是什么?

我会更清楚地说明问题:

Row 1: adds 15 to zero, puts it in $a0 register.

Row 2: ANDs $a0 register with 3, puts the result in $a0.

Row 3: ORs $a0 register with 22, puts the result in $a0.

Row 4: shifts $a0 to the left by 5 bits. Result - in $a0.

Row 5: if $a0 equals $a0, go to PC+4+6*24 address. The address is Row 7 which is:

slt $11, $10, $9

将值0放在$ t3寄存器中,因为$ 10 = $ 9。

现在我进入第8行:

beq $11, $0, 3.

第8行有什么作用?

任何帮助都是适当的。

Direct link to my image - please click if you can't read properly.

enter image description here

1 个答案:

答案 0 :(得分:2)

beq $11, $0, 3表示如果beq,请从$11 == $0前面跳至第三条指令。例如:

beq $11, $0, 3
instruction 1
instruction 2
instruction 3 < the target

号码3将首先进行签名扩展,然后添加到计划结果$pc中:

$pc = $pc + 3 * 4 

或简单地说:

$pc = $pc + 3 << 2

4是因为每个MIPS指令的大小都是4个字节。