我有以下 C 代码,我想将其转换为 MIPS 汇编。
int fib_iter(int n) {
int i, f0, f1, f;
f0 = 0;
f1 = 1;
if (n == 0) return f0;
if (n == 1) return f1;
for (i = 2; i <= n; i = i + 1) {
f = f0 + f1;
f0 = f1;
f1 = 1;
}
return f;
}
我不知道该怎么做,而且我在任何地方都找不到好的教程。我已阅读有关 MIPS 的维基百科文章( https://en.wikipedia.org/wiki/MIPS_instruction_set ),并发现有关所有汇编命令的表格已经非常有用,但实际上翻译对我来说仍然不清楚。您能否用上面的小示例向我展示如何做然后我可以自己尝试一下吗?谢谢!
最佳答案
我认为你的家庭作业的目的是尝试让你思考像 C 这样的高级语言是如何被编译器翻译成汇编语言的。考虑寄存器、逻辑测试、跳转、堆栈等。
我相信您的小程序将返回斐波那契数列中的第 n 个数字。如果我设置了这个,我会期望编写一个简单的 MIPS 程序集片段来完成同样的事情。
因此,在这个小函数中您需要考虑五个数字,您可以使用五个寄存器(如果您聪明的话,可以使用更少的寄存器)。还有一些相等性检查和循环。
因此,您应该查看 add
、bne
、beq
和 j
指令。另请查看标签(与 bne
和 beq
一起使用)并决定使用哪种调用约定,以便了解与 一起使用的返回地址和值寄存器j
.
祝你好运!
关于将 C 语言转换为 MIPS 汇编语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23636644/