我需要将此C代码转换为MIPS程序集。 这是C代码:
int tmp = 0;
for (int j = 0; j < 15; ++j)
tmp = tmp * 2 + 3
这是我的MIPS汇编代码。这是正确的翻译吗?如果你发现任何错误,我真的很想知道。
# tmp = $v0
# j = $t0
.globl main
main:
li $v0,0
loop:
bgt $t0,15,exit
addi $t0,$t0,1
mul $t1,$v0,2
add $v0,$t1, 3
j loop
exit:
答案 0 :(得分:8)
你的循环从0到14,所以你的bgt指令应该是:bgt $t0,14,exit
我认为。
答案 1 :(得分:2)
在循环之前,不要将j($ t0)设置为零。
答案 2 :(得分:0)
我也不知道你正在运行什么MIPS模拟器,但我知道 其中一些不是常量,他们要求你分配它们 寄存器。所以像bgt Rsrc1,Src2,label,通常如果你放一个 src2中的整数,计算机将翻译,但我知道 有些你会在添加$ v0,$ t1,3时遇到错误,因为它不会 翻译添加到addi。与mul相同。我知道我的SPIM模拟器没有 允许它。