2017-05-29 1 views
0

J'apprends comment faire MIPS et je suis confus sur la multiplication. Disons que je convertis le code C suivant en MIPS.Multiplier une valeur de registre par une constante dans MIPS?

c = b + a*3 

avec a, b, c stockées dans les registres $ s1, s2 $, $ s3 respectivement. Comment suis-je supposé écrire un * 3 dans MIPS? Y at-il une instruction de type addi pour la multiplication ou est-ce que je stocke 3 dans un registre temporaire et utilise l'opérateur mult comme ceci?

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

Si oui, comment puis-je obtenir la valeur finale ou le produit de cette opération pour compléter mon code C?

+0

Le produit 64 bits se trouve dans les registres 'lo' et' hi'. Utilisez les instructions 'mflo' et' mfhi' pour obtenir leurs valeurs (ou simplement 'mflo' si vous êtes seulement intéressé par les 32 bits les moins significatifs). Consultez une référence de jeu d'instructions MIPS pour plus d'informations sur ces instructions. – Michael

Répondre

1

Le jeu d'instructions MIPS ne fournit pas une instruction mult avec une valeur immédiate. Par conséquent, vous devez stocker la valeur dans un registre temporaire, puis utiliser des instructions mult. Le résultat de l'instruction mult serait stocké dans les registres lo et hi donnant respectivement les 32 bits inférieurs du résultat et les 32 bits supérieurs du résultat.

+0

donc dans ce cas, si a est quelque chose de petit comme a = 3 alors je serais seulement intéressé par "mflo" correct? – maxbr7t

+1

Oui, ce serait correct. –