我想將下面的C代碼翻譯成MIPS彙編語言,但我有點理解它,但是,我失去了第一行的等價物在彙編中。MIPS:將C代碼翻譯爲程序集
int ary[3] = {2,3,4};
我很感激,如果有人可以看看我的C大會'翻譯',並驗證我在正確的軌道上。
C代碼
int ary[3] = {2,3,4};
int i=0;
//loop to double array values
for(i=0; i < 3; i++){
ary[i] = ary[i]*2;
}
我試了一下:
add $t0, $s0, $zero #get base address of the array 'ary' (dont understand this part)
addi $t1, baseAddress, 8 #cut off point to stop the loop; array[2]
addi $t1, $zero, $zero #initialize i=0
Start:
lw $t2, base(offset)
sll $t2, $t0, 1 #mutiply $t2 by 2
sw $t2, base(offset)
addi $t0, $t0, 4 # Increment the address to the next element
bne $t0, $t1, Start # $t0 will keep increasing until reaches stopping point $t1
Exit:
您好,非常感謝您的回覆,我很感激。我想知道爲什麼沒有結束語。另外,爲什麼lw和sw指令中沒有基地址? – AnchovyLegend
不確定你在說什麼結束語句,也許是'jr $ ra'?由於你的C代碼不是一個完整的函數或程序,我只是以類似的方式提供了asm代碼。至於缺少的基地址:這是因爲地址已經通過添加'$ sp'(數組地址)來計算,所以基數只是0.您可以根據需要寫出。請注意,基址不能是另一個寄存器,「lw $ t2,$ sp($ t1)'是非法的。 – Jester
我很欣賞這個:)謝謝! – AnchovyLegend