Advertisement
Guest User

Untitled

a guest
May 26th, 2015
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. COMB:
  2. beqz $a1 CEXIT #r == 0, return 1
  3. beq $a0 $a1 CEXIT #n == r, return 1
  4. addi $sp $sp -12 #Store n, r, and the return address
  5. sw $a0 0($sp)
  6. sw $a1 4($sp)
  7. sw $ra 8($sp)
  8. addi $a0 $a0 -1 #n = n - 1
  9. jal COMB #Comb(n-1, r)
  10. move $t0 $v0 #Temporarily move the return from the call to $t0
  11. lw $a0 0($sp) #Reload all variables from the stack
  12. lw $a1 4($sp)
  13. lw $ra 8($sp)
  14. addi $sp $sp 12
  15. addi $sp $sp -16 #Store n, r, the return address, and the return from the first call
  16. sw $a0 0($sp)
  17. sw $a1 4($sp)
  18. sw $ra 8($sp)
  19. sw $t0 12($sp)
  20. addi $a0 $a0 -1 #n = n - 1
  21. addi $a1 $a1 -1 #r = r - 1
  22. jal COMB #Comb(n-1, r-1)
  23. lw $a0 0($sp) #Reload all variables from the stack
  24. lw $a1 4($sp)
  25. lw $ra 8($sp)
  26. lw $t0 12($sp)
  27. addi $sp $sp 16
  28. move $t1 $v0
  29. add $v0 $t0 $t1 #Return Comb(n-1, r) + Comb(n-1, r-1)
  30. jr $ra
  31.  
  32.  
  33. CEXIT:
  34. li $v0 1 #Return 1
  35. jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement