私はちょっと混乱しています。 MIPSの分岐命令はどこまでジャンプできますか? 実際に私が間違っていない場合、+/- 128 kByte、2^21ビットとなる回答が見つかりました。しかし、私はちょうどこれがどのようにすることができません。大学で与えられたシートには、このようにPC = PC + 4 + BranchAddressが計算されることが書かれています。 BrachAddress自体は{14 {即時[15]、即時、2'b0}です。もし私が間違っていないならば、16ビットの即時があり、MSBは14個の「場所」まで左と右は2つのゼロで拡張されます。だから、これはブランチアドレスが2^18ビットでなければならないということではないでしょうか?分岐命令はどのくらい離れてMIPSでジャンプできますか?
1
A
答えて
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ビットの符号付き数字です。
関連する問題
- 1. MIPS分岐命令
- 2. j(ジャンプ)命令は、どのくらい離れてメモリにジャンプできますか? (MIPS)
- 3. MIPS/UP16分岐命令
- 4. MIPSのジャンプと分岐命令の範囲
- 5. MIPS分岐命令 - 分岐位置の取得
- 6. MIPS分岐命令のオフセットは符号拡張されていますか?
- 7. ジャンプ命令のMIPS範囲
- 8. la命令はどのようにMIPSで翻訳されていますか?
- 9. MIPSシフト命令
- 10. rtはMIPS命令フォーマットで何を表していますか?
- 11. MIPSの 'align'命令
- 12. アセンブリMIPS TAl命令
- 13. MIPS lb sw命令
- 14. MIPSアセンブリ命令数
- 15. は分岐命令データに依存しますか?
- 16. MIPSでは、なぜジャンプ命令がプログラムカウンタを28ビットのターゲットアドレスに設定できるのですか
- 17. divu MIPS命令でのGNU ASの動作のばらつき
- 18. MIPSの命令の質問
- 19. LLVM分岐命令:if文またはループ内のif?
- 20. MIPS "la"疑似命令
- 21. シングルサイクルMIPSプロセッサ命令実行
- 22. ADDIU命令エンコーディング(MIPS、GCC)
- 23. MIPS命令およびマシンコード
- 24. MIPSでの分岐アドレスの計算
- 25. MIPSの直接命令ori/addi/luiなどが必要です。
- 26. 分岐命令オフセットの計算方法は?
- 27. 正規表現は、MIPS命令
- 28. MIPS命令のカウントは実装によって変更されますか?
- 29. MIPS命令のタイミングと固定のハザード
- 30. オフセットありのMIPS 32 lb命令