Comando BEQ MIPS-assembly

Copiei uma fotografia de uma missão que tenho em MIPS - Aseembly.

eu entendo (acho) o que acontece no código até a linha:

beq $11, $0, 3

eu entendo que o código agora faz um branch PC-relativo para o endereço:

PC+4+3*4 
Mas eu não entendo como isso acontece neste código aqui. Qual é a próxima linha a ser destacada?

Vou deixar a minha pergunta mais clara:
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
O que coloca o valor 0 no registo $t3, porque $10=$9.

Agora chego à linha 8:

beq $11, $0, 3.
O que faz a linha 8?

Qualquer ajuda é apropriada.

link direto para a minha imagem - por favor Clique se você não pode ler corretamente.

enter image description here

Author: Alan, 2014-08-08

1 answers

beq $11, $0, 3 significa saltar para a terceira instrução à frente de beq se $11 == $0. Por exemplo:

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

O número 3 será o primeiro sinal estendido e depois adicionado ao contador do programa $pc como:

$pc = $pc + 3 * 4 

Ou simplesmente:

$pc = $pc + 3 << 2

O 4 é porque cada instrução MIPS tem 4 bytes de tamanho.

 1
Author: , 2014-08-08 05:25:06