从Java到MIPS的转换
我还有几天要考试,如果你们能查一下我的答案,我将不胜感激。我必须将一小段java代码转换成MIPS指令,但是没有可用的备忘录,这是我第一次做这种事情 问题是:从Java到MIPS的转换,java,assembly,mips,Java,Assembly,Mips,我还有几天要考试,如果你们能查一下我的答案,我将不胜感激。我必须将一小段java代码转换成MIPS指令,但是没有可用的备忘录,这是我第一次做这种事情 问题是: While (save[i] != k) { save[i] = v[i]; i=i+2; } a) 上面列出的代码是一个高级Java程序,它分配 将数组v保存到数组中。假设汇编程序存储 数组将和v分别保存到寄存器$s2和$s3中,要求您转换 上面的Java程序转换成汇编语言代码。 注意:对于未指定的变量,您可以自由使用不同的寄
While (save[i] != k) {
save[i] = v[i];
i=i+2;
}
a) 上面列出的代码是一个高级Java程序,它分配
将数组v保存到数组中。假设汇编程序存储
数组将和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
这里有很多很多“C到mips”的问题。查一查。“Java到mips”有点伤脑筋。你可能会在代码复查中得到更好的答案-