Multiplicar um valor de registo por uma constante em MIPS?

Estou a aprender a fazer MIPS e estou confuso com a multiplicação. Digamos que estava a converter o seguinte código C em MIPS.

c = b + a*3 

com a,b,c armazenados nos registos $s1,$s2,$s3 respectivamente. Como é que vou escrever a * 3 em MIPS? Existe uma instrução de tipo adicional para multiplicação ou eu guardo 3 em um registro temporário e uso o operador de mult como este?

addi $t0, $zero, 3
mult $s1,$t0

Em caso afirmativo, como posso obter o valor final ou o produto desta operação para completar o meu código C?

Author: maxbr7t, 2017-05-29

1 answers

O conjunto de instruções MIPS não fornece uma instrução mult com valor imediato. Portanto, você teria que armazenar o valor em um registro temporário e, em seguida, usar instruções de mult. O resultado da instrução de mult seria armazenado em registros lo e hi dando o menor 32-bit do resultado e superior 32-bit do resultado, respectivamente.

 2
Author: Rahul Behl, 2017-05-29 06:32:06