2012-03-13 14 views
0

分岐アドレスがMIPSでどのように計算されるのか分かりません。ここでMIPSでの分岐アドレスの計算

は、プログラムカウンタ(PC)に何が起こるか全体像です:​​

私はオフセット数はPCに追加される前signed-extendedである理由を参照してください、それが有効にする必要があり、単に16ビットの値であり、 32ビットの値に変換しますが、なぜ我々はleft double shift符号拡張された番号にする必要がありますか? (また、<<2は、我々は4で数を掛けることを意味します)

我々テーマにしながら、私は質問拡張します:私たちは<<2をしない理由を即値(登録)、からオフセットする場合 を?

ありがとうございます!

答えて

1

知っておくべき重要なことは、命令がの4バイトアライメントであるということです。したがって、2つの最下位アドレスビットを格納する必要はなく、16ビットのディスプレースメントで2^18バイトの範囲が得られます。

さらに、データがバイトアドレス可能でなければならないため、データのシフトがシフトされないことがあります。

1

アドレスは4の倍数である必要があります。したがって、自動的に4を掛けることによって、実際の使用のために重要なビットが残ります。 (言い換えれば、あなたは本当に18ビットを持っているようです。)