我有一段C++代码需要使用直接转换转换为mips。我大部分都完成了,它是一个while while循环。我只是不明白MIPS中的这一行。在MIPS32汇编中复制数组
x[i] = y[i];
我不明白如何将其转换为mips,并且我一直在不停地在线搜索。我能得到任何帮助吗?
编辑
这就是我,但被告知这是不正确的:
la $6, y
Li $7, $1
Add $7, $7, $7
Add $7, $7, $7
Add $8, $6, $7
Lw $6, 0($8)
La $7, x
Li $8, $1
Add $8, $8, $8
Add $8, $8, $8
Add $7, $7, $8
Sw $6, 0($7)
我用这个在线网站作为参考:
http://www.cs.pitt.edu/~xujie/cs447/AccessingArray.htm
第二个编辑
C++编码
个i=0;
do {
x[i]=y[i];
i++;
}
while (i!=j);
MIPS直接翻译
Addi $1, $1, 0
Loop: la $6, y
Li $7, $1
Add $7, $7, $7
Add $7, $7, $7
Add $8, $6, $7
Lw $6, 0($8)
La $7, x
Li $8, $1
Add $8, $8, $8
Add $8, $8, $8
Add $7, $7, $8
Sw $6, 0($7)
Addi $1, $1, 1
Bne $1, $2, loop
而且这里是我所有的寄存器,我可以使用,以避免混淆你:
Variables i j x y 4 (constant) Free
Registers $1 $2 $3 $4 $5 $6, $7, $8
这行代码不会比较数组的两个元素。这是一项任务。 – sellibitze
您是否正在尝试编写MIPS程序集版本的数组相等性测试?如果没有,我没有得到这个问题。 – sellibitze
什么阻止你将数组的第一个元素的地址加载到CPU寄存器中,通过递增地址遍历循环中的所有元素,将元素加载到其他CPU寄存器并比较它们? – sellibitze