アセンブリプログラムの問題です。
アセンブリプログラムの勉強をしているのですが、以下の問題がわかりません。
(1) 変数f, g, h, i, j はCのプログラム内で32ビットの整数として宣言されているものとする。
以下のCのステートメントをMIPSのアセンブリコードで表せ。 また、f, g, h, i, j の値がそれぞれ1, 2, 3, 4, 5 であるならば最終的なfの値はいくつか。
a. f = g + f + i ;
b. f = g + (h + 2);
(2) 変数f, g, h, i, jはそれぞれ$s0, $s1, $s2, $s3, $s4に割り当てるられているものとする。また、配列AとBのベースアドレスは、それぞれレジスタ$s6 と$s7 に割り当てられているものとする。
次のCのステートメントをMIPSのアセンブリコードで表せ。
a. f = g + h + B[4] ;
b. f = g - A[ B[4] ] ;
c. f = -g + h + B[1] ;
d. f = A[ B[g] + 1 ] ;
(3) (2)の設定において、次のMIPSのステートメントをCのステートメントで表せ。 また、可能ならばこのMIPSアセンブリコードを同じ機能を果たしながらMIPS命令の数が最小になるように書き直せ。
a. add $s0, $s0, $s1
add $s0, $s0, $s2
add $s0, $s0, $s3
add $s0, $s0, $s4
b. lw $s0, 4($s6)
以上です。わかるものだけでも良いので教えてもらえますでしょうか?
補足
++iは左辺値ではありえないのはわかっていますが この2行を使ってどう説明するのかわからないのですが。