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.
3
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.