0

私は自分の課題を解決するのに行き詰まっています。これがそれが述べていることです、

MIPSアセンブリ言語コードの次のフラグメントについて考えてみます。

start:   add $t1, $t2, $t3
         addi $t1, $t1, 10
         add $t4, $t2, $t2
         add $t6, $t3, $t3
         beq $t1, $t4, q_final
middle:  add $t1, $0, $0
         bne $t6, $t4, s_final
         add $t7, $t7, $t7
j final
q_final: slt $t1, $t4, $t6
s_final: add $t7, $t7, $t1
final:   jr $ra

a)ラベルの開始の値が100(すべて10進数表記)の場合、ラベルmiddle、q_final、およびfinalで指定されているアドレスは何ですか?進め方がわかりません。各ステートメントに4を追加すると、他のラベルの値が得られると思いました。これを行う別のより良い方法はありますか?

前もって感謝します。

4

1 に答える 1

2

進め方がわかりません。各ステートメントに4を追加すると、他のラベルの値が得られると思いました。これを行う別のより良い方法はありますか?

シンプルな方が良いです(mips!)。各命令が4バイトかかる場合、それは非常に重要です。

100:     add $t1, $t2, $t3
104:     addi $t1, $t1, 10
108:     add $t4, $t2, $t2
112:     add $t6, $t3, $t3
116:     beq $t1, $t4, 132
120:     add $t1, $0, $0
124:     bne $t6, $t4, 136
128:     add $t7, $t7, $t7

132:     slt $t1, $t4, $t6
136:     add $t7, $t7, $t1
140:     jr $ra

ちなみに、メモリアドレスを10進表記で与えるのは誰ですか?

于 2011-08-09T17:14:32.430 に答える