我使用递归的这个c代码用于fibonalcci序列:
int fib(int n)
{
if (n==0) return 0;
if (n==1) return 1;
else return fib(n-1)+fib(n-2);
}
我希望将该c代码翻译成mips代码(寄存器a0包含n的值,寄存器s0包含fib(n)的值) 这就是我所做的:
F: bne $a0,$zero,L
addi $s0,$zero,0
addi $s1,$zero,1
jr $ra
L: addi $sp,$sp,-4
sw $ra,0($sp)
addi $a0,$a0,-1
jal F
addi $t0,$s1,0
add $s1,$s0,$s1
addi $s0,$t0,0
lw $ra,0($sp)
addi $sp,$sp,4
jr $ra
但似乎没有完全按照c代码执行的操作,我想修复mips代码,让它完全像c代码一样。我如何修复mips代码?