Advertisement
Jobjob

Fibonacci itératif MIPS

May 25th, 2013
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. main:
  2. addiu $sp, $sp, -4 # deplacement du pointeur de pile -4
  3. sw $ra, 0($sp) # stockage de l'adresse de retour dans la pile
  4.  
  5. li $a0, 5 # le registre $a0 est utilise pour le passage en parametre
  6.  
  7. jal fibo # appel de fibo
  8.  
  9. lw $ra, 0($sp) # chargement de l'adresse de retour
  10. addiu $sp, $sp, 4 # deplacement du pointeur de pile a sa position initial
  11.  
  12. jr $ra
  13.  
  14. fibo:
  15. li $t0, 1 # chargement de la valeur 1 dans le registre $t0
  16. beq $t0, $a0, is_base # test si le parametre == 1 ($a0 == 1) dans ce cas on branche à is_one
  17. blez $a0, is_base # test si le paramètre <= 0 ($a0 <= 0 | c'est le cas $a0 == 0 qui nous interresse) dans ce cas on branche à is_one
  18.  
  19. addiu $sp, $sp, -8
  20. sw $t0, 0($sp) # sauvegarde de fibo(n-2) sur la pile (i.e fibo(0) ici)
  21. sw $t0, 4($sp) # sauvegarde de fibo(n-1) sur la pile (i.e fibo(1) ici)
  22.  
  23. li $t2, 1 # compteur de la boucle while
  24.  
  25. while: # label de la boucle while
  26. beq $t2, $a0, end_while # si le compteur == paramtre i.e $t2 == $a0, on a fini donc on branche end_while pour sortir de la boucle
  27.  
  28. lw $t0, 0($sp) # chargement de fibo(n-2)
  29. lw $t1, 4($sp) # chargement de fibo(n-1)
  30.  
  31. add $v0, $t0, $t1 # on trouve fibo($t1)
  32.  
  33. sw $t1, 0($sp) # mise a jour de fibo(n-2) (il doit mtn valoir $t1)
  34. sw $v0, 4($sp) # mise a jour de fibo(n-1) (il doit mtn valoir $v0)
  35.  
  36. addiu $t2, $t2, 1 # incrémentation du compteur
  37.  
  38. j while # fermeture de la boucle (branchement a while:)
  39.  
  40. end_while:
  41. addiu $sp, $sp, 8 # deplacement du pointeur de pile a sa position initial
  42. jr $ra
  43.  
  44. is_base:
  45. li $v0, 1 # charge 1 dans le registre pour la valeur de retour $v0
  46. jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement