Diferença entre" add "e" add "para a pseudoinstrução" move " em MIPS?
para esta pseudoinstrução:
move $rt, $rs
o addi e o código de montagem são aceitáveis? Então eu poderia usar qualquer um
add $rt, $rs, $0
ou
addi $rt, $rs, $0
?
editar:
Acho que cometi um erro com ... addi
add $rt, $rs, $0
seria o mesmo que
addi $rt, $rs, 0
uma vez que add
adiciona registos, e eu preciso de uma constante para o imediato para addi
1 answers
A instrução addi
requer um operandi imediato em vez de um registo, por isso o $0
seria realmente0
:
add $rt, $rs, $0
addi $rt, $rs, 0
Ambos irão trabalhar e ter toda a informação necessária codificada na própria instrução):
add $d, $s, $t
0000 00ss ssst tttt dddd d000 0010 0000
addi $t, $s, i
0010 00ss ssst tttt iiii iiii iiii iiii
No entanto, seria mais habitual apenas usar o registo $0
Sem bloqueio neste caso particular, uma vez que esse é, afinal, o seu propósito.
Eu também tenderia a usar a variante SEM sinal, no entanto, uma vez que eu parece lembrar-se que pode haver uma verificação de transbordamento extra para as instruções assinadas:
addu $rt, $rs, $0