我试图将我的斐波那契C代码转换为MIPS汇编代码,但是,当我将MIPS代码运行到MIPS模拟器时,它似乎还没有结束。

C代码:

int fibo(int n)
{
    if(n<2) return 1;
    else f(n-1)+f(n-2);
}

int main()
{
    fibo(5);
}

汇编代码:

main: addi $sp, $sp, -4
sw $ra, 0($sp)

addi $a0, $zero, 5
jal fibo; 

lw $ra, 0($sp)
addi $sp, $sp, 4

fibo: addi $sp, $sp, -12
sw $s0, 0($sp)
sw $s1, 4($sp)
sw $ra, 8($sp)

slti $t0, $a0, 2
beq $t0, $zero, ELSE

addi $v0, $zero, 1
jr $ra

ELSE: addi $s0, $a0, 0
addi $a0, $a0, -1
jal fibo;

addi $s1, $v0, 0
addi $a0, $s0, -2
jal fibo

add $s1, $s1, $v0
j EXIT

EXIT: lw $s0, 0($sp)
lw $s1, 4($sp)
lw $ra, 8($sp)
addi $sp, $sp, 12

jr $ra

===============>>#1 票数:5

我试图将我的斐波那契C代码转换为MIPS汇编代码,但是,当我将MIPS代码运行到MIPS模拟器时,它似乎还没有结束。

C代码:

int fibo(int n)
{
    if(n<2) return 1;
    else f(n-1)+f(n-2);
}

int main()
{
    fibo(5);
}

汇编代码:

main: addi $sp, $sp, -4
sw $ra, 0($sp)

addi $a0, $zero, 5
jal fibo; 

lw $ra, 0($sp)
addi $sp, $sp, 4

fibo: addi $sp, $sp, -12
sw $s0, 0($sp)
sw $s1, 4($sp)
sw $ra, 8($sp)

slti $t0, $a0, 2
beq $t0, $zero, ELSE

addi $v0, $zero, 1
jr $ra

ELSE: addi $s0, $a0, 0
addi $a0, $a0, -1
jal fibo;

addi $s1, $v0, 0
addi $a0, $s0, -2
jal fibo

add $s1, $s1, $v0
j EXIT

EXIT: lw $s0, 0($sp)
lw $s1, 4($sp)
lw $ra, 8($sp)
addi $sp, $sp, 12

jr $ra

===============>>#2 票数:1

我试图将我的斐波那契C代码转换为MIPS汇编代码,但是,当我将MIPS代码运行到MIPS模拟器时,它似乎还没有结束。

C代码:

int fibo(int n)
{
    if(n<2) return 1;
    else f(n-1)+f(n-2);
}

int main()
{
    fibo(5);
}

汇编代码:

main: addi $sp, $sp, -4
sw $ra, 0($sp)

addi $a0, $zero, 5
jal fibo; 

lw $ra, 0($sp)
addi $sp, $sp, 4

fibo: addi $sp, $sp, -12
sw $s0, 0($sp)
sw $s1, 4($sp)
sw $ra, 8($sp)

slti $t0, $a0, 2
beq $t0, $zero, ELSE

addi $v0, $zero, 1
jr $ra

ELSE: addi $s0, $a0, 0
addi $a0, $a0, -1
jal fibo;

addi $s1, $v0, 0
addi $a0, $s0, -2
jal fibo

add $s1, $s1, $v0
j EXIT

EXIT: lw $s0, 0($sp)
lw $s1, 4($sp)
lw $ra, 8($sp)
addi $sp, $sp, 12

jr $ra

===============>>#3 票数:0

我试图将我的斐波那契C代码转换为MIPS汇编代码,但是,当我将MIPS代码运行到MIPS模拟器时,它似乎还没有结束。

C代码:

int fibo(int n)
{
    if(n<2) return 1;
    else f(n-1)+f(n-2);
}

int main()
{
    fibo(5);
}

汇编代码:

main: addi $sp, $sp, -4
sw $ra, 0($sp)

addi $a0, $zero, 5
jal fibo; 

lw $ra, 0($sp)
addi $sp, $sp, 4

fibo: addi $sp, $sp, -12
sw $s0, 0($sp)
sw $s1, 4($sp)
sw $ra, 8($sp)

slti $t0, $a0, 2
beq $t0, $zero, ELSE

addi $v0, $zero, 1
jr $ra

ELSE: addi $s0, $a0, 0
addi $a0, $a0, -1
jal fibo;

addi $s1, $v0, 0
addi $a0, $s0, -2
jal fibo

add $s1, $s1, $v0
j EXIT

EXIT: lw $s0, 0($sp)
lw $s1, 4($sp)
lw $ra, 8($sp)
addi $sp, $sp, 12

jr $ra

  ask by user3489500 translate from so

未解决问题?本站智能推荐:

1回复

递归Fibonacci汇编MIPS代码

我在模块编译器中为我的课程创建了一个代码生成器。 它在MIPS汇编代码中生成代码,似乎工作正常(我测试过非常简单的程序和表达式)。 我测试了递归的Fibonacci程序,它目前永远循环。 基本情况0和1正常工作。 但是当我尝试使用fib(2)或更多时,它会保持循环。 不确定是什么问题,
1回复

在mips中使用递归打印Fibonacci序列

大家好,我需要打印斐波那契数列的值直到第n个值(用户输入)。 因此,如果用户输入3,则必须打印1、1、2。我必须递归且迭代地进行打印。 我得到了迭代部分,但是递归部分遇到了一些麻烦。 在程序中,我可以获取它以打印值。 任何帮助,将不胜感激。
1回复

MIPS斐波那契使用递归

因此,我正在研究MIPS中的斐波那契,而规则是我需要为解决问题的递归方法准备序言。 我的代码当前产生错误的输出,并且我无法确定应编辑的部分。
2回复

MIPS递归斐波那契数列

我在MIPS中递归处理堆栈时遇到麻烦。 我明白了,但是我的程序没有按照我的意思做出反应。 我的目标是将用户输入作为n并在n处打印斐波那契数。 到目前为止,我所拥有的如下。 (我很确定问题出在fib函数中数字的实际计算中。)谢谢您的帮助! :) 示例运行: 正确运
1回复

Tribonacci在Mips组装中

我想出了问题...我想。 我让程序起作用了。 我现在的问题是,这将被认为是递归的吗??? 我尽我所能评论它。 我只在调用自身的函数之外操作堆栈。 我的老师想要一个递归程序,我真的不确定现在是否合格。 我也想知道这是否比递归执行此程序的另一种正常方法好还是坏。
2回复

使用MIPS程序集的递归函数

我在任务上遇到了一些麻烦,并希望得到一些帮助。 我不是要求答案,我宁愿把两个和两个放在一起自己解决,但我对MIPS知之甚少,我很难知道从哪里开始。 这是我开始的 基本上我们使用递归函数来计算斐波那契数,并使用一个循环来打印斐波纳契数列的前10个数。 我查了很多例子,但他们都
2回复

C#斐波那契计算器问题

我试图获得一个工作的斐波那契计算器,但是我遇到了一些问题。 据我所知,我的代码运行良好,尽管当我输入单词时它崩溃了。 我不确定如何使它为我工作,所以它只会接受数字。 提前致谢
1回复

MIPS计算器

我正在尝试完成这个MIPS计算器,超级基本,我的第一个mips程序。 它不必处理溢出或类似的东西,只需处理小的正数。 我没有检查我的算法的乘法和除法,因为我只是想加入工作。 我不能为我的生活弄清楚为什么int不会读入而且当我调用lb $ a0时,我得到的内存超出界限,op显示运算符
6回复

编写Haskell无限Fibonacci系列函数的C#版本

注意:这个问题的重点更多来自好奇心。 我想知道是否有可能将Haskell实现音译成功能性的C#等价物。 所以我一直在学习Haskell非常好 ,在解决Project Euler问题的同时,我遇到了这个美丽的Haskell Fibonacci实现: 当然我很想写这样的C#版本,所以
1回复

带有BigIntegers的斐波那契计算器

我正在做一个家庭作业项目,在该项目中,我必须让用户输入一个数字,然后计算机吐出那个数字之前的斐波那契数字。 我通常可以使用int值来执行此操作,但对于该程序,我需要改用BigInteger类型,因为int,long,double等类型太小,无法容纳我需要的值。 所以,这是我得到的代码。 问