如何将此代码转换为Mips?
int n = 100; int sum = 0; while (n>0) {
sum = sum + n;
n--; }
到目前为止,我有这个,我不知道该怎么做才能完成这个。
.data
n: .word 100
.text
main:
la $t0, n
lw $t1, 0(t0)
li $so, 0
Loop:
bgt $t1, $zero, EXIT
add $t1, $s0, $t1
addi $t1, $t1, -1
j Loop
exit:
答案 0 :(得分:3)
更改行:
add $t1, $s0, $t1
要:
add $s0, $s0, $t1
此外,不需要使用数据段。只需使用:
设置$ t1即可li $t1, 100
答案 1 :(得分:1)
“Mips”不是一种语言。 MIPS指令集架构(ISA)。您是否想知道如何将C代码转换为MIPS汇编代码?
这看起来像是Patterson和Hennessy教科书的作业。如果是这样,你应该去教授的办公时间寻求帮助。几乎每所大学都在其学术手册中包含一条声明,即在线寻求家庭作业帮助是不道德的。
如果您的请求不是家庭作业,那么将该C代码转换为MIPS汇编代码的最佳方法是使用编译器。对于简单的循环,编译器将生成比手动生成的更有效的代码。例如,“gcc -march = native -O3”将生成代码,以优化您正在编译的确切CPU,同时考虑管道深度和缓存延迟。
如果您绝对需要查看汇编代码,请使用“gcc -S”生成汇编文件。
答案 2 :(得分:0)
Mips没有循环,而是你要做的是使用带有条件的循环语句并循环使用。
答案 3 :(得分:0)
我认为bgt $ t1,$ 0,EXIT与你想要的相反。看起来你想要转换while(n> 100),如果你使用另一种方法在while循环中执行代码,那么它会有所帮助,然后是bgt $ t1,$ 0 ,.如我错了请纠正我。