Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- COMB:
- beqz $a1 CEXIT #r == 0, return 1
- beq $a0 $a1 CEXIT #n == r, return 1
- addi $sp $sp -12 #Store n, r, and the return address
- sw $a0 0($sp)
- sw $a1 4($sp)
- sw $ra 8($sp)
- addi $a0 $a0 -1 #n = n - 1
- jal COMB #Comb(n-1, r)
- move $t0 $v0 #Temporarily move the return from the call to $t0
- lw $a0 0($sp) #Reload all variables from the stack
- lw $a1 4($sp)
- lw $ra 8($sp)
- addi $sp $sp 12
- addi $sp $sp -16 #Store n, r, the return address, and the return from the first call
- sw $a0 0($sp)
- sw $a1 4($sp)
- sw $ra 8($sp)
- sw $t0 12($sp)
- addi $a0 $a0 -1 #n = n - 1
- addi $a1 $a1 -1 #r = r - 1
- jal COMB #Comb(n-1, r-1)
- lw $a0 0($sp) #Reload all variables from the stack
- lw $a1 4($sp)
- lw $ra 8($sp)
- lw $t0 12($sp)
- addi $sp $sp 16
- move $t1 $v0
- add $v0 $t0 $t1 #Return Comb(n-1, r) + Comb(n-1, r-1)
- jr $ra
- CEXIT:
- li $v0 1 #Return 1
- jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement