我有一段 C++ 代码需要使用直接翻译转换为 mips。我已经完成了大部分工作,它是一个 do while 循环。我只是不明白 MIPS 中的这一行。
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