我需要为:
编写MIPS递归函数int factorial(int n){
if(n<=1) return 1;
else return n*(n-2)!!
}
n存储在参数寄存器$ a0
中这可能是这样做的吗?
factorial: subi $sp, $sp, 8
sw $ra, 4($sp)
sw $a0, 0($sp)
slt $t0, $a0, 1
BEQ $t0, $zero, L1 ; n>1 goto L1
addi $v0, $zero, 1
add $sp, $sp, 8
JR $ra
L1: subi $a0, $a0, 2
jal factorial
lw $a0, 0($sp)
lw $ra, 4($sp)
addi $sp, $sp, 8
mult $v0,$a0,$v0
JR $ra