• 締切済み

MIPS関連です。

MIPSに関する以下の問題についてどなたか添削お願いします。 ・1~6のCのステートメントをMIPSのアセンブリコードで表せ。 ・1~6のCのステートメントを実行するためにMIPSのアセンブリ命令がいくつ必要か。 ・変数f, g, h, i, j の値が1, 2, 3, 4, 5であるならば最終的なfの値はいくらか。 1. f = g + h + i + j; add t0, g, h add t1, i, j add f, t0, t1 ・3つ ・14 2. f = g + (h + 5); addi s0, h, 5 add f, g, s0 2つ ・10 3. f = g + f + i; add t0, g, f add f, t0, i ・1つ ・7 4. f = g + (h + 2) addi s0, h, 2 add f, g, s0 ・2つ ・7 5. f = f + g + h + i + j + 2; add s0, f, g add s1, h, i add s2, s1, s0 add s3, s2, j addi f, s3, 1 ・5つ ・15 6. f = g - (f + 5) addi t0, f, 5 sub f, g, t0 ・2つ ・4 ・1~6のMIPSのステートメントをCのステートメントで表せ。 ・変数f, g, h, i の値がそれぞれ1, 2, 3, 4ならば最終的なfの値はいくらか。 1. add f, g, h f = g + h; ・5 2. addi f, f, 1 add f, g, h f = f + 1; f = g + h; ・4 3. add f, f, h f = f + h; ・4 4. sub f, $0, f addi f, f, 1 f = f + 1; f = $0 + f; ・2 5. add f, -g, h f = -g + h; ・1 6. addi h, f, 1 sub f, g, h h = f + 1; f = g + h; ・4

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

これだけの情報では、回答は難しいと思います。 > 1. f = g + h + i + j; 例えば上記ですが... まず、f, g, h, i, jの型がわかりません。 intとlong longとfloatとdoubleでは当然違いますし、混在しているなら型変換も必要になります。 また、レジスタ変数であると仮定してよいのか、そうでないのかによっても違います。 > add t0, g, h > add t1, i, j > add f, t0, t1 g, h, i, jのいずれからがt0やt1ではないことは保証されているのでしょうか? また、別の文でt0やt1を使っていないことも。 ここはやはり、 add f,g,h add f,f,i add f,f,j だと思うのですが... g, h, i, jがレジスタ変数で、かつintまたはunsigned intであると仮定した場合の話ですが... > addi s0, h, 5 > add f, g, s0 s0を破壊するときは、元の値を退避しないといけないのでは? > 4. sub f, $0, f > addi f, f, 1 > > f = f + 1; > f = $0 + f; これは変ですね。 f = -f + 1; ではないですか? > 5. add f, -g, h 上記は意味不明ですね。 -gって何? ほかにも単純な下記間違いのようなものは多々ありますが、それは自分で見つけてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アセンブリプログラムの問題です。

    アセンブリプログラムの勉強をしているのですが、以下の問題がわかりません。 (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) 以上です。わかるものだけでも良いので教えてもらえますでしょうか?

  • MIPSでクイックソート

    MIPSアセンブリ言語でクイックソートを書いているのですが、うまく動作しません。以下のソース文では、loop2の所がずっとループし、終わる気配がありません。アドバイスをお願いします。 .text .globl main main: li $v0, 0 li $t0, 0 li $t1, 28 loop: slti $s0, $t0, 28 beq $s0, $0, reset lw $t2, list($t0) sw $t2, array($t0) addi $t0, $t0, 4 j loop reset: move $t0, $0 lw $t2, array($t0) lw $t3, array($t1) ave: add $t4, $t2, $t3 li $t5, 2 div $t6, $t4, $t5 loop1: ble $t6, $t2, loop2 addi $t0, $t0, 4 j loop1 loop2: bgt $t6, $t3, change addi $t1, $t1, -4 j loop2 change: bge $t2, $t3, small sw $t2, array($t1) sw $t3, array($t0) j loop1 small: move $s2, $t1 addi $s2, $s2, -4 lw $t3, array($s1) bge $s2, $t0, big j ave big: move $s2, $t0 addi $s2, $s2, 4 bge $s2, $t1, reset2 j ave exit: jr $ra .data list: .word 3, 5, 1, 8, 9, 7, 2 array: .space 128

  • アセンブリ言語の問題です。

    長い内容になっていますがご了承ください 演算命令の動作 以下のプログラム実行後のレジスタ$v0の値を書け,16進の数値には0xをつけること 問題0: addi $s0,$zero,8 addi $s1,$zero,8 addi $s2,$zero,3 addi $s3,$zero,11 add $t0,$s0,$s1 add $t1,$s2,$s3 sub $v0,$t 論理演算命令の動作 以下のプログラム実行後のレジスタ$v0の値を書け,16進の数値には0xをつけること 問題0: addi $s0,$zero,0x8 addi $s1,$zero,0x8 addi $s2,$zero,0xd addi $s3,$zero,0x2 and $t0,$s0,$s1 and $t1,$s2,$s3 or $v0,$t0,$t1 以上です。この問題が分かる方がいましたら回答お願いします。

  • MIPSのアセンブリ・コードの問題です。

    CコードからMIPSアセンブリコードへの変換問題を教えてください。 以下のC のコードに対応するMIPS のアセンブリ・コードを書け。 C コード: #define TAB_SIZE 8 int tab[TAB_SIZE]; void main() { int i; for (i = 1; i < TAB_SIZE; i++) { tab[i - 1] = tab[i]; } } • SPIM でのシミュレーションのため、 tab[8] = {8, 9, 10, 11, 12, 13, 14, 15}; としてコードを書け。つまり、データ・セグメントを次のようにせよ。 .data tab: .word 8, 9, 10, 11, 12, 13, 14, 15 • SPIM のDATA セクションが以下のようになることを確認せよ。 [0x10010000] 9 [0x10010004] a [0x10010008] b [0x1001000c] c [0x10010010] d [0x10010014] e [0x10010018] f [0x1001001c] f 1

  • アセンブリ言語の問題です。

    以下のプログラム実行後のレジスタ$v0の値を書け,16進の数値には0xをつけること 問題0: addi $s0,$zero,0 addi $s1,$zero,2 beq $s0,$s1,L1 sub $v0,$s0,$s1 beq $zero,$zero,L2 L1: add $v0,$s0,$s1 L2: addi $v0,$v0,1 分岐命令の動作の問題です。分かる方がいましたら回答をよろしくお願いいたします。 sub:減算 addi:即値付き演算命令 beq:等しい L:ラベル

  • アセンブリ言語の分岐命令の動作の問題です。

    以下のプログラム実行後のレジスタ$v0の値を書け,16進の数値には0xをつけること 問題0: addi $s0,$zero,2 addi $s1,$zero,5 slt $at,$s1,$s0 bne $at,$zero,L1 sub $v0,$s0,$s1 beq $zero,$zero,L2 L1: add $v0,$s0,$s1 L2: addi $v0,$v0,1 分かる方がいましたら回答お願いいたします

  • 20名で1対1で話し合う研修を6回でやる方法

    20名で行う研修で1対1で話し合う研修を合計6回でやろうとしています。 10人が誰かと話し合い、合計59組の組み合わせを6回の間で やる方法がどうしてもわかりません。 どなたか教えてください。 ちなみに組み合わせは決まっており(以下のとおりです)その組み合わせを6回以内に効率よくやりたいと思ってます。 ちなみに3回まではアナログ的なやり方で10組ずつ話し合える組み合わせはわかったのですが、 それ以降が頭がぐちゃぐちゃになってわかりません。 組み合わせは以下のとおりです。 AさんとGさん、BさんとJさん、CさんとMさん、LさんとEさん、PさんとQさん、IさんとNさん、GさんとRさん、GさんとSさん、LさんとFさん、 MさんとOさん、TさんとNさん、DさんとEさん、EさんとSさん、AさんとTさん、BさんとHさん、CさんとFさん、JさんとTさん、HさんとMさん、 FさんとQさん、TさんとOさん、AさんとNさん、BさんとEさん、CさんとKさん、JさんとKさん、HさんとKさん、DさんとTさん、IさんとOさん、 GさんとPさん、LさんとNさん、MさんとPさん、EさんとQさん、AさんとSさん、BさんとPさん、CさんとOさん、JさんとPさん、HさんとSさん、 DさんとKさん、IさんとPさん、LさんとSさん、AさんとRさん、BさんとRさん、CさんとQさん、JさんとRさん、HさんとRさん、DさんとSさん、 IさんとQさん、LさんとOさん、BさんとQさん、DさんとOさん、LさんとRさん、JさんとMさん、HさんとIさん、DさんとGさん、IさんとKさん、 GさんとFさん、MさんとNさん、EさんとFさん、FさんとTさん、KさんとNさん の計59通りです。 お力添え何卒よろしくお願いしますm(_ _)m この回答とプラスその算出方法も合わせて教えていただけると幸いです。

  • 2行のセルの入れ替え。

     初めまして、よろしくお願いします。  セルに A B C D E F G H I J K L 1 a b c d e f 2 g h i j k l 3 m n o p q r 4 s t u v w x 5 " ・ " ・ " ・ " 100 "  という表があります。これを A B C D E F G H I J K L 1 a b c d e f g h i j k l 2 m n o p q r s t u v w x 3 " 4 " 5 " ・ " ・ " ・ " 100 "  という風に、偶数行のデーターを奇数行の後ろにつけるようにしたいと思います。無理ならば奇数行だけのデーター、偶数行だけのデーターとなるように、何かよい方法を教えて頂きたく、よろしくお願いします。

  • いきなりこんなメールが来ました。

    知らないアドレスからYahoo!メールに来ました。文字化けなのは分かってますが、解読お願いします。 $B$&$A$H$*A0$N7hDjE*$J0c$$65$($F$"$2$h$&$+!)(B $B$^$:$&$A$o0&>p$K52$($F$J$$(B $B$b$&9%$-$8$c$J$$(B $BNd$a$?$C$F8@$C$F$k?M$K$7$D$3$/$D$-$^$H$o$J$$(B $B%9%H!<%+!<$7$?$3$H$J$$(B $B$&$A$o$*A0$h$j$+$o$5$C$Q$j$7$F$k$N$H:,@-$=$3$^$GIe$C$F$J$$(B $B<+J,$G$I$s$@$1$&$A$KEEOC$7$F$k$+J,$+$C$F$k$h$M(B $BL@:Y=q<h$j4s$;$k;~$,K\Ev3Z$7$_$@$h(B?? $B$&$A$*A0$,$7$D$3$$$;$$$GK\EvF,$*$+$7$/$J$j$=$&$@$h:#(B $B$3$N2?=54V$^$B$GBQ$($k$N$D$i$+$C$?$7K\Ev:#$^$G$G0lHV$N@:?@E*6lDK$rL#$ &$A$,(B $B$&$A$,$I$s$@$1$D$i$$;W$$$7$F2fK}$7$F$?$+9M$($?J}$,$$$$$h(B $B$I$s$@$1@:?@E*$K6l$7$$;W$$$7$?9M$($?J}$,$$$$$h(B $B9%$-$J?M$K$=$3$^$GDI$$5M$a$?<+J,$,$d$C$F$-$?$3$H$H$+:#$7$F$k$3$H(B $B$"$H$3$N@hHo32FO$1=P$7$?8e?'!9$H$*6b$NOC$7$bMm$s$G$/$k$H;W$&$1$I?F9'9T$7$?$$$s$8$c$J$+$C$?!)<+J,$,$d$C$F$-$?$3$H$G$$$/$iBg?M$K$J$C$F$h$&$,>/$J$+$i$:2HB2$K$o>/$7$G$bLBOG$+$+$k$C$F9M$($F9TF0$7$?J}$,$$$$$h?F9'9T$7$?$$$J$i(B $BJa$^$k$J$s$F$b$C$F$N$[$+$@$+$i$M(B $B$^$!$H$K$+$/$&$A$

    • ベストアンサー
    • HTML
  • Excelで飛び飛びのセル(列)を参照したいのですが…その2

     ある「sheet1」で、G1="A",H1="B",I1="C",J1="D",K1="E",L1="F",M1="G",N1="H",O1="I",P1="J",Q1="K",・・というように文字が入力されているとすると、5列飛びの値A,F,K・・・(G1,L1,Q1・・・)が欲しいのです。そして、その値が「sheet2」に、C5=A,D5=F,E5=K,F5=P・・・となるようにしたいのです。ただ数値が5ずつ増加するのではなく、そのセルに入力されている文字列を参照したいのです。  それをまた、「sheet1」の、G2="A",H2="B",I2="C",J2="D"・・・の値でも同じ事をしたいのですが・・・。  よろしくお願いします。