2016-12-01 5 views
1

私はちょっと混乱しています。 MIPSの分岐命令はどこまでジャンプできますか? 実際に私が間違っていない場合、+/- 128 kByte、2^21ビットとなる回答が見つかりました。しかし、私はちょうどこれがどのようにすることができません。大学で与えられたシートには、このようにPC = PC + 4 + BranchAddressが計算されることが書かれています。 BrachAddress自体は{14 {即時[15]、即時、2'b0}です。もし私が間違っていないならば、16ビットの即時があり、MSBは14個の「場所」まで左と右は2つのゼロで拡張されます。だから、これはブランチアドレスが2^18ビットでなければならないということではないでしょうか?分岐命令はどのくらい離れてMIPSでジャンプできますか?

答えて

2

thisのような命令セットリファレンスをチェックする必要があります。もし

------------------------------------------------------ 
| 6 bit opcode | 5 bit rs | 5 bit rt | 16 bit offset | 
------------------------------------------------------ 

、それをオフセットに関しては述べたように、例えば、BEQ命令がエンコードされていることを見ることができます:

を18ビットの符号付きオフセット(16ビットオフセットフィールドは2ビット左シフト)を添加し次の命令のアドレス 分岐(不分岐自体)に、分岐遅延スロットで、PC相対有効なターゲットアドレス

を形成するために、これは、16ビット値は2だけシフト残されることを意味します(乗算されるこれは基本的にダブルワードにアライメントされ、符号付き数値として解釈されます)。これにより、[-2^17, 2^17 - 1]の値が得られるので、[-131072, 131071]となります。しかし、分岐後の命令に値が追加され、命令自体に対する実際の範囲が[-131072+4, 131071+4]であることを考慮する必要があります。

無条件ジャンプBCの話は、オフセットのための26ビット(まだ2だけ左にシフトされている)を持っているので、28ビットの符号付き数字です。

関連する問題