我有一段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