Skip to content

Instantly share code, notes, and snippets.

@ak-seyam
Created January 3, 2020 16:35
Show Gist options
  • Save ak-seyam/6a23178551b429c4f960256cefad1048 to your computer and use it in GitHub Desktop.
Save ak-seyam/6a23178551b429c4f960256cefad1048 to your computer and use it in GitHub Desktop.
.data
input: .asciiz "enter your number"
.text
.globl main
main:
li $v0 , 4
la $a0 , input
syscall
li $v0 , 5
syscall
#a0 -> argument
#t0 -> placeholder 0
#t1 -> placeholder 1
#t2 -> iterator
#t3 -> temp
#v1 -> result
fib:
#placeholders initialization
addi $t0 , $zero , 0
addi $t1 , $zero , 1
#iterator init
addi $t2 , $zero , 1 #starting iterator from 1 because it will do fib repeatitions n-1 times
#it will do fib repeatitions n-1 times as follows
#fib(5) :
# fib(0) = 0 _
# |
# |-> given
# _|
# fib(1) = 1
#
# fib (2) = fib(1) + fib(0) #1
# = 0 + 1 ....fib(2) recorded in placeholder 2
# fib (3) = fib(2) + fib(1) #2
# = 1 + 1 ....fib(3) recorded in placeholder 2
# fib (4) = fib(3) + fib(2) #3
# = 2 + 1 ....fib(4) recorded in placeholder 2
# fib (5) = fib(4) + fib(3) #4
# = 3 + 2 ....fib(5) recorded in placeholder 2
# and thus, fib(5) = 5 Q.E.D
bgt $a0 , $zero , inputIsGreaterThanZero
addi $v0 , $zero ,0
inputIsGreaterThanZero: bgt $a0 , $t1 , loop
addi $v0 , $zero ,1
loop:
bge $t2 , $v0 , done
addi $t3 , $t0 , 0
addi $t0 , $t1 , 0
add $t1 , $t3 , $t1
addi $t2 , $t2 , 1
j loop
done:
addi $v1 , $t1 , 0
addi $a0 , $v1 , 0
li $v0 , 1
syscall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment