Diferença entre "mover" e " li " na linguagem MIPS assembly
eu estava a praticar a conversão do código C em linguagem de montagem MIPS, e estou a ter dificuldade em compreender o uso de move
e li
na atribuição de variáveis.
por exemplo, para implementar a seguinte linha C em MIPS:
int x = 0;
se bem entendi (duvido muito disso, no entanto), parece que ambos trabalham na montadora MIPS:
move $s0, $zero
li $s0, $zero
Estou errado? Qual é a diferença entre estas duas linhas?
31
1 answers
A instrução move
copia um valor de um registo para outro. A instrução li
carrega um valor numérico específico nesse registo.
Para o caso específico de zero, pode usar o zero constante ou o registo zero para obter isso:
move $s0, $zero
li $s0, 0
No entanto, não há nenhum registo que produza um valor diferente de zero, por isso teria de usar {[[3]} se quisesse outro número, como:
li $s0, 12345678
55
Author: duskwuff -inactive-, 2013-11-07 03:55:32