Here is the code we wrote today:
addi $v0, $zero, 5 #read int and store in a0 syscall add $a0, $zero, $v0 jal fib add $a0, $v0, $zero #print int from v0 addi $v0, $zero, 1 syscall addi $v0, $zero, 10 #exit syscall fib: addi $sp, $sp, -16 sw $ra, ($sp) sw $s0, 4($sp) sw $s1, 8($sp) addi $s1, $a0, 0 #n is in s1 addi $t0, $zero, 2 blt $a0, $t0, doit #if(n < 2) b recurse doit: add $v0, $zero, $a0 #return n; b return recurse: addi $a0, $s1, -1 #int val1 = fib(n-1); jal fib add $s0, $v0, $zero #val1 is in s0 addi $a0, $s1, -2 #int val2 = fib(n-2); jal fib add $v0, $s0, $v0 #return val1 + val2; return: #return lw $ra, ($sp) lw $s0, 4($sp) lw $s1, 8($sp) addi $sp, $sp, 16 jr $ra