【发布时间】:2013-02-11 21:48:19
【问题描述】:
如何将以下代码翻译成 MIPS 汇编语言?
# include < stdio .h >
int fibRecursive ( int n )
{
int answer ;
if ( n < 2 ) {
answer = n ;
}
else {
answer = fibRecursive ( n - 1 ) + fibRecursive ( n - 2 ) ;
}
return answer ;
}
int main ( int argc , char * argv [] )
{
int input = 10;
int result = fibRecursive ( input ) ;
printf ( " The %d - th Fibonacci number is % d .\ n " , input , result ) ;
return 0;
}
感谢您的帮助。 我的线路有问题:
answer = fibRecursive ( n - 1 ) + fibRecursive ( n - 2 ) ;
这是我目前拥有的 MIPS:
fibRecursive:
addi $sp, $sp, -4
sw $ra, 0($sp)
addi $s0, $zero, 0
slti $t0, $a0, 2
beq $t0, $zero, ELSE
add $s0, $a0, $zero
j EXIT
ELSE:
addi $sp, $sp, -4
sw $a0, 0($sp)
addi $a0, $a0, -1
jal fibRecursive
EXIT:
add $v0, $zero, $s0
【问题讨论】:
-
我认为编译器可以帮助您完成这项任务?
-
这是你的作业,你自己做吧。
-
@user1998581 你知道 MIPS 汇编语言吗?
-
gcc 或 armcc 或任何带有 -S 标志的东西。输出一个不错的汇编文件供您查看。看看编译器是怎么做的,如果需要的话,你可以自己动手做工作或家庭作业。
-
@user1998581 “递归”调用函数没有区别,它与其他调用一样。标签的名称只是“偶然”与调用者的标签相同。