从Java转换为MIPS

时间:2013-11-06 15:47:28

标签: java assembly mips

我在一天的时间里参加考试,如果你们能查看我的答案,我将非常感激。我必须将一小段java代码转换为MIPS指令,但没有备忘录可用,这是我第一次做这类事情。

以下是问题:

While (save[i] != k) { 
save[i] = v[i]; 
i=i+2; 
} 

a)上面列出的代码是一个高级Java程序,它分配每个第二个元素 数组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'

1 个答案:

答案 0 :(得分:2)

您错过了几次加载,而且您的商店不正确:

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