Skip to content

Instantly share code, notes, and snippets.

@MicBrain
Created February 26, 2015 17:46
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 MicBrain/42c736cac71c4f306bd3 to your computer and use it in GitHub Desktop.
Save MicBrain/42c736cac71c4f306bd3 to your computer and use it in GitHub Desktop.
Pascal's triangle in MAL
pascal: add $sp, $sp, -16 # prologue
sw $31, 0($sp)
sw $4, 4($sp)
sw $5, 8($sp)
sw $16, 12($sp)
li $2, 1 # return 1 if base case
beqz $5, ret
beq $4, $5, ret
addi $4, $4, -1
addi $5, $5, -1
jal pascal
move $16, $2 # save pascal(n-1, r-1)
lw $4, 4($sp) # get original args back
lw $5, 8($sp)
addi $4, $4, -1
jal pascal # pascal(n-1, r)
add $2, $2, $16 # return pascal(n-1, r-1) + pascal(n-1, r)
ret: lw $31, 0($sp) # epilogue
lw $16, 12($sp)
add $sp, $sp, 16
jr $31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment