2016-02-29 2 views
0

Je suis actuellement à la recherche de la meilleure méthode pour exécuter une fonction n power2. En bref, le code dans MIPS devrait calculer 2n. n étant un nombre positif stocké dans $a0. Cependant, en ce moment mes résultats arrivent une puissance de moins.MIPS Assembly Language (Power2)

Ma tentative

main: 

    # initialize 
    la $a0,3  #n counter 
    li $s0,2  #base number 
    li $s1,0  #calculated value 

While: 
    beq $a0,$zero,exit  #Checks if n is zero, if yes exit program 
    sllv $s1,$s0,$a0  #Shift left logical by n, this should do the math 2^n 

exit: 

Results from QtSpim

Répondre

3

"Echec" n'est pas une déclaration très instructif. Quoi qu'il en soit, la syntaxe correcte pour beg $a0,$zero,j Exit est beq $a0, $zero, exit mais vous n'avez même pas besoin de cette vérification. Vous devez charger $s0 avec 1 et non 0 car 2^0 est 1 et sll $s0, 2, $a0 doit être sllv $s0, $s0, $a0.

+0

Correction des problèmes et du code de sortie j. Il fonctionne maintenant dans QtSpim mais malheureusement les résultats ne sont pas poussés à $ s0 comme vu dans l'image du résultat ci-dessus. –

+0

Assurez-vous d'examiner les registres au bon endroit. Avec le 'beq' en place, ce code ne fait rien sauf charger' $ s0' avec '1' et cela devrait fonctionner quoi qu'il arrive. – Jester

+0

Je ne suis pas sûr de ce que vous voulez dire "le bon point". Ce qui me manque pour mon QtSpim ne produit aucun résultat. –