Q&A6

2015.11.11 分
コンピュータアーキテクチャI コーナー
お願い:手書きレポートは,誤字脱字が目立ちます.ワープロレポートは変換ミスが目立ちます.
レポートは読み返して,そういう間違いを極力減らしてください.
(もちろん私も努力します.
)
1
質問と回答
1. slt と sltu の違いがいまいちよく分かりません.
回答:slt は 2 の補数表示された数同士の比較,sltu は符号なし数同士の比較を行います.
2. 演習 6 の問題に関して,jr 命令の使い方がよく分かりません.
回答:jr 命令は,レジスタが持つ値のアドレスにジャンプする命令です.演習 6 では,case
ラベルのアドレスが格納されたテーブルを引いて,飛び先アドレスをレジスタに格納し,そ
のアドレスに飛ぶようになっています.
3. jr 命令はレジスタの指す番地に飛ぶということなのですが,飛ぶ先のラベルの指定方法がわ
かりません.
回答:演習 6 の解答例を見てください.解説を付けておきました.
4. 制御フローグラフについて,調べたがどのようなものかよく分からなかったので制御フロー
グラフについての説明がほしいです.
回答:制御フロー = 制御の流れ.命令の実行順序がどのように変わっていくか示した
もの.フローチャートです.
5. sw の使いどころがよく分かりません.
回答:レジスタのデータをメモリ(メインメモリのこと)に格納するときに使います.講
義では,変数はレジスタに割り当てられているとして扱っていますが,実際には,変数はメ
モリに割り当てられます.したがって,メモリからレジスタに読み出して演算を行い,結果
をメモリに戻す必要があります.その時に使います.
6. 問題 2.18.1 の解答についてですが,制御フローグラフに開始 はいらないのですか?
回答:あったほうがいいでしょうね.ただし,教科書
p.95 は,プログラムの部分に対する
フローなので,開始 は書いてないのだと思います.
7. 先週の Q&A のおまけの問題を考えてみましたが,これで合っているでしょうか?
解答:0 にしたいレジスタを$t0 とする. sub $t0,$t0,$t0
回答:結構ですよ.積極性を評価します.まだ他にもあります.考えてみて下さい.
8. while 文,case 文のアセンブリコード翻訳があまり理解できなかったので詳しく教えてくださ
い.
回答:講義ノートおよび教科書を 5 回読み直してください.それでわからなかったら,聞
きに来てください.
9. 演習 4 で bne を beq に変更した場合,下記のコンパイルで合っていますか?
1
beq $s3, $s4, Then #g=h のとき Then へ
sub $s0, $s1, $s2
#f=g-h
j Exit
Then:
add $s0, $t1, $t2
Exit:
#f=g+h
回答:あってます.
2