Recursion 使用递归计算Fibonaci序列(mips代码)

Recursion 使用递归计算Fibonaci序列(mips代码),recursion,mips,Recursion,Mips,我有一个使用递归的斐波那契序列的c代码: 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

我有一个使用递归的斐波那契序列的c代码:

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代码?

如果包含汇编函数的所有代码,将会有所帮助。现在它似乎缺少开头的
F
标签和一些参数检查。抱歉,Michael,我已经修复了它。