私はこの宿題を解決しようとしていましたが、解決策を考え出すことができませんでした。以下は問題ですMIPSからCへの翻訳の問題
次のMIPSコードを高レベルの言語プログラムに翻訳してください。 $ t0、$ t1、$ t2に配列A、Bのベースアドレスがそれぞれ とCであるとします。
add $t4, $zero, $zero
Loop:
add $t5, $t4, $t1
lw $t6, 0($t5)
add $t5, $t4, $t2
lw $t7, 0($t5)
add $t6, $t6, $t7
add $t5, $t4, $t0
sw $t6, 0($t5)
addi $t4, $t4, 4
slti $t5, $t4, 256
bne $t5, $zero, Loop
Also find the decimal value in the offset field of bne
命令。
これは私が試したものですが、まだ256
の位置は見つかりません。
int *temp4 = 0;
while(1)
{
*int temp5 = temp4 +B[0];
a:
*int temp6 = temp5;
temp5 = C[0] + temp4;
*temp7 = temp5;
temp6 = temp6 + temp7;
temp5 = temp4 + A[0];
temp6 = temp5;
temp4 += 4;
if(temp5 < temp4)
goto __;
if(temp5 != 0)
goto a;
}
ステートメントでは、$ t5、$ t4、$ t1を追加します。t1は値に初期化されません。あなたはそれが何を保持するだろうか詳しく教えてもらえますか? –
'$ t1'は配列Bのベースアドレスを含んでいます。その前提です。 mipsでは、 'la $ t1、arrayB'のように簡単です – Tom