Tandis que la Boucle en Mips (Nouveaux Mips)
Comment puis-je convertir ce code en Mips?
int n = 100; int sum = 0; while (n>0) {
sum = sum + n;
n--; }
J'ai jusqu'à présent et je ne suis pas sûre de savoir quoi faire pour finir ce.
.data
n: .word 100
.text
main:
la $t0, n
lw $t1, 0(t0)
li $so, 0
Loop:
bgt $t1, $zero, EXIT
add $t1, $s0, $t1
addi $t1, $t1, -1
j Loop
exit:
Vous devez vous connecter pour publier un commentaire.
Modifier la ligne:
À:
Aussi, il n'est pas nécessaire pour l'utilisation du segment de données. Il suffit de régler $t1 à l'aide de:
"Mips" n'est pas une langue. MIPS une Instruction Set Architecture (ISA). Vous êtes à essayer de comprendre comment activer le code C en code assembleur MIPS?
Cela ressemble à un devoir à la maison de l'Patterson et Hennessy manuel. Si oui, vous devez vous rendre à votre professeur les heures de bureau pour obtenir de l'aide. Presque toutes les universités inclut dans son manuel scolaire d'un énoncé qu'il est contraire à l'éthique pour demander de l'aide aux devoirs en ligne.
Si votre demande n'est pas un devoir à la maison, alors le meilleur moyen de convertir ce code en C en code assembleur MIPS est avec un compilateur. Pour de simples boucles, le compilateur va générer plus efficace de code que vous pouvez générer à la main. Par exemple, "gcc-march=native -O3" va générer du code qui optimise le nombre exact de CPU sur lequel vous êtes en train de compiler, en tenant compte de pipeline de la profondeur et de mettre en cache les latences.
Si vous avez absolument besoin de voir le code assembleur, utiliser "gcc-S" pour produire un fichier d'assemblage.
Mips n'ont pas de boucles par l'-dire, au lieu de ce que vous allez faire est d'utiliser une instruction de saut avec des conditions et boucle avec qui.
Je pense que bgt $t1, $zero, la SORTIE est à l'opposé de ce que vous voulez. Il semble que vous voulez convertir while(n > 100), il serait utile si vous faites une autre méthode pour faire les codes à l'intérieur de la boucle while, puis bgt $t1, $zero, . Corrigez-moi si je me trompe.