我会在几天内进行一次考试,如果你们能检查我的答案,我将不胜感激。我必须将一小段Java代码转换为MIPS指令,但是没有可用的备忘,这是我第一次做这种事情。
这是问题:
While (save[i] != k) {
save[i] = v[i];
i=i+2;
}
a)上面列出的代码是一个高级Java程序,它分配了
数组v到数组保存。假设汇编器存储了基址
将数组save和v分别存储到寄存器$ s2和$ s3中,要求您将
将上面的Java程序转换为汇编语言代码。
注意:对于未指定的变量,您可以随意使用其他寄存器
明确地
这是一个尝试:
i = $ t1
k = $ t2
loop:
sll $t3, $t1, 2 //get the offset (i*4)
add $t4, $t3, $s2 //t4 is the address for save[i]
beq $t4, $t2, exit //check the while condition
add $t5, $t3, $s3 //t5 is the address for v[i]
sw $t4, $t5 //save[i] = v[i]
addi $t1, 2 //inc i
j loop
exit:
任何帮助将不胜感激。
编辑:将“ bne”更改为“ beq”
最佳答案
您缺少一些负载,并且您的商店不正确:
sll $t3, $t1, 2 //get the offset (i*4)
add $t4, $t3, $s2 //t4 is the address for save[i]
lw $t5,($t4) //t5 = save[i]
beq $t5, $t2, exit //check the while condition
add $t5, $t3, $s3 //t5 is the address for v[i]
lw $t5,($t5) //t5 = v[i]
sw $t5, ($t4) //save[i] = v[i]
addi $t1, 2 //inc i