Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@rafael-garcia
Last active March 31, 2018 23:08
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 rafael-garcia/28ef50310b08a61d64e8afbfe6fcd5ab to your computer and use it in GitHub Desktop.
Save rafael-garcia/28ef50310b08a61d64e8afbfe6fcd5ab to your computer and use it in GitHub Desktop.
ROT p1 2017
main:
# n = 6
addi $s0, $zero, 6
# por padrao registradores $aX guardam os params
add $a0, $s0, $zero
# chama rotina
jal ROT
# result = rot(n)
add $s1, $zero, $v0
ROT:
addi $t0, $zero, 2
slt $t1, $a0, $t0
# a < 2
bne $t1, $zero, LT2
# a = 2
beq $t0, $a0, EQ2
# empilhamento de argumento e end. de retorno
addi $sp, $sp, -8
sw $a0, 0($sp)
sw $ra, 4($sp)
# a = a - 2
sub $a0, $a0, $t0
# chamada recursiva
jal ROT
# return 1 + $v0 da recursao
addi $v0, $v0, 1
# desempilha
lw $a0, 0($sp)
lw $ra, 4($sp)
addi $sp, $sp, 8
# retorna
jr $ra
LT2:
and $v0, $zero, $zero
jr $ra
EQ2:
addi $v0, $zero, 1
jr $ra
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment