我目前正在上一个类,我们必须将 C 翻译成 Mips,但是,我正在努力完成这项作业。有人可以帮助我更好地了解 Mips 以便知道如何做到这一点吗?
主要问题:保存寄存器和将其加载到堆栈上有什么区别? 如何创建一个接受输入参数的函数? 如何使函数递归?
谢谢!
C 代码:
int f(int n, int m) {
if (n ≤ 0)
return m;
else
return f(n-1, n+m);
最佳答案
这是 GodBolt 的输出(带有 -O3 标志)
f:
blez $4,.L7
move $2,$5
.L3:
addu $2,$2,$4
addiu $4,$4,-1
bne $4,$0,.L3
nop
.L7:
j $31
nop
当然,如果你在不理解的情况下将其按原样交出,那么你就是在失败,并且很可能会给你的类(class)带来麻烦。另请注意,编译器将递归函数替换为迭代函数:) 请随意使用不同的优化级别进行编译,看看编译器有多困惑。
或者...向助教、老师或类的同学寻求帮助。
关于c - 我需要帮助,将 C 代码翻译成 Mips,任何事情都会受到赞赏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54954148/