我目前正在上课,我们必须将C转换为Mips,但是,我正在为这项作业而苦苦挣扎。有人可以帮助我更好地了解Mips,以便知道如何执行此操作吗?
主要问题:保存寄存器并将其装入堆栈有什么区别? 如何创建一个接受输入参数的函数? 您如何使函数递归?
谢谢!
C代码:
int f(int n, int m) {
if (n ≤ 0)
return m;
else
return f(n-1, n+m);
答案 0 :(得分:0)
这是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
当然,如果您不加理解地按原样打开它,则可能会失败,并且很可能在课堂上遇到麻烦。还要注意,编译器将递归函数替换为迭代函数:)可以随意使用不同的优化级别进行编译,以查看编译器有多混乱。
或者...向您的班级的助教,老师或同学寻求帮助。