- 締切済み
アセンブリプログラムの問題です。
アセンブリプログラムの勉強をしているのですが、以下の問題がわかりません。 (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) 以上です。わかるものだけでも良いので教えてもらえますでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- salsberry
- ベストアンサー率69% (495/711)
問題の設定不足で回答できません。 (1) 変数f, g, h, i, jがレジスタに割り当てられているのかそうでないのかが不明です。 fの値を求めることはアセンブリコードとは関係に可能です。 a. g + f + i = 2 + 1 + 4 = 7 b. g + (h + 2) = 2 + (3 + 2) = 7 (2) 配列A, Bの型が不明です。