Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. .data:
  2. _msg1: .ascizz "fib("
  3. _msg2: .ascizz ") = "
  4. _msg3: .ascizz "\n"
  5.  
  6. .text:
  7.  
  8. _main:
  9. ; scanf("%d"), store in s0
  10. li $v0, 5
  11. syscall
  12. move $s0, $v0
  13. move $s0, $a0
  14.  
  15. addiu $sp, $sp, 4
  16. sw $s0, 0($sp)
  17. j _fib
  18. lw $s0, 0($sp)
  19. addi $sp, $sp, -4
  20.  
  21. move $s1, $v0
  22. li $v0, 4
  23. la $a0, _msg1
  24. syscall
  25.  
  26. li $v0, 1
  27. move $a0, $s0
  28. syscall
  29.  
  30. li $v0, 4
  31. la $a0, _msg2
  32. syscall
  33.  
  34. li $v0, 1
  35. move $a0, $s1
  36. syscall
  37.  
  38. li $v0, 4
  39. la $a0, _msg3
  40. syscall
  41.  
  42. li $v0, 10
  43. syscall
  44.  
  45. _fib:
  46. addiu $sp, $sp, 4
  47. sw $ra, 0($sp)
  48.  
  49. ; if (n < 2) return n
  50. li $t0, 2
  51. cmp $a0, $t0
  52. blt _end
  53. ; else return fib(n-1) + fib(n-2)
  54.  
  55. addi $a0, $a0, -1 ; n--
  56. move $s0, $a0 ; store n
  57.  
  58. ; get fib(n-1)
  59. addiu $sp, $sp, 4
  60. sw $s0, 0($sp)
  61. addiu $sp, $sp, 4
  62. sw $s1, 0($sp)
  63. j _fib
  64. lw $s1, 0($sp)
  65. addi $sp, $sp, -4
  66. lw $s0, 0($sp)
  67. addi $sp, $sp, -4
  68.  
  69. ; s1 = fib(n-1)
  70. move $s1, $v0
  71. ; a0 = n-2
  72. move $a0, $s0
  73. addi $a0, $a0, -1
  74.  
  75. ; get fib(n-2)
  76. addiu $sp, $sp, 4
  77. sw $s0, 0($sp)
  78. addiu $sp, $sp, 4
  79. sw $s1, 0($sp)
  80. j _fib
  81. lw $s1, 0($sp)
  82. addi $sp, $sp, -4
  83. lw $s0, 0($sp)
  84. addi $sp, $sp, -4
  85. ;v0 = fib(n-2)
  86. ;v0 = fib(n-1) + fib(n-2)
  87. add $v0, $v0, $s1
  88.  
  89. _end:
  90. lw $ra, 0($sp)
  91. addi $sp, $sp, -4
  92. j $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement