質問。次のJavaコードフラグメントに相当するMIPSアセンブルコードを記述します。
int x = 1 ;
int y = 3 ;
int c = 2 ;
x = y - c ;
if (x != y) { x = y + 5 ; }
else { x = c ; } ;
これは私が現在持っているものです。
.data
X: .word 1
Y: .word 3
C: .word 2
.text
main:
la $t1, X
la $t2, Y
la $t3, C
lw $t1, ($t1)
lw $t2, ($t2)
lw $t3, ($t3)
sub $t1, $t2, $t3
li $v0, 1
beq $t1, $t2, iflabel
add $t1,$t3, 0 # sets x = c by adding zero to c and putting result in $t1 (register for x) used.
iflabel: add $t1,$t2,5
syscall
li $v0, 10
私が知る限り、「8」を印刷する必要がありますが、代わりに0は?!?であり、宿題の質問ではなく、MIPSの改訂の質問です。私のシステムコールはおそらく間違った場所にあり、おそらくエラーを引き起こしていると推測できますか?レジスタの内容を確認して各行を1つずつ実行できるため、MARSを使用してプログラムを実行していますが、それでも私の問題を助けません。