Skip to content

Instantly share code, notes, and snippets.

@giuscri
Created June 29, 2017 18:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save giuscri/384c1080dff00737541d76cce000760b to your computer and use it in GitHub Desktop.
Save giuscri/384c1080dff00737541d76cce000760b to your computer and use it in GitHub Desktop.
.globl main
.globl fibonacci
.data
some_error_occurred: .asciiz "*** Some error occurred.\n"
.text
main:
sub $sp, $sp, 4
sw $ra, 0($sp)
sub $sp, $sp, 4
sw $fp, 0($sp)
move $fp, $sp
sub $sp, $sp, 4
li $t0, 20
sw $t0, 0($sp)
jal fibonacci
add $sp, $sp, 4
move $a0, $v0
li $v0, 1
syscall
li $a0, 0x0a
li $v0, 11
syscall
move $sp, $fp
lw $fp, 0($sp)
add $sp, $sp, 4
lw $ra, 0($sp)
add $sp, $sp, 4
jr $ra
fibonacci:
sub $sp, $sp, 4
sw $ra, 0($sp)
sub $sp, $sp, 4
sw $fp, 0($sp)
move $fp, $sp
sub $sp, $sp, 8
sw $s0, -4($fp)
sw $s1, -8($fp)
lw $t0, 8($fp)
blez $t0, fail
li $t1, 2
ble $t0, $t1, fibonacci_base_case
sub $sp, $sp, 4
sub $t0, $t0, 1
sw $t0, 0($sp)
jal fibonacci
move $s0, $v0
sub $sp, $sp, 4
lw $t0, 8($fp)
sub $t0, $t0, 2
sw $t0, 0($sp)
jal fibonacci
move $s1, $v0
add $v0, $s0, $s1
j return_fibonacci
fibonacci_base_case:
move $v0, $t0
sub $v0, $v0, 1
return_fibonacci:
lw $s1, -8($fp)
lw $s0, -4($fp)
add $sp, $sp, 8
move $sp, $fp
lw $fp, 0($sp)
add $sp, $sp, 4
lw $ra, 0($sp)
add $sp, $sp, 4
jr $ra
fail:
la $a0, some_error_occurred
li $v0, 4
syscall
li $a0, -1
li $v0, 17
syscall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment