- 締切済み
MIPSのbne命令について
場所をお借りして質問させていただきます。 MIPSのbne命令は、ジャンプ先アドレスが16bit以内だと聞いたのですが、 もし、ジャンプ先アドレスが16bitを超えてしまうような場合はどのように処理しているのでしょうか。 回答よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- koujikuu
- ベストアンサー率43% (429/993)
回答No.2
MIPS 命令コード表を見たところ、「jump register」(レジスタの値によるJUMP) で全メモリ領域をカバーできます(32bit直接アドレス) 「bne」は相対ジャンプなので前後128k(18bit)のみです (16bit*4=18bit) 「jump」命令は、28bit直接アドレス (26bit*4=28bit) またジャンプ指定アドレスが範囲外になるとアセンブルエラーになります 解決例「beq」命令で「jump」命令をスキップする 分岐命令参照 http://ocw.kyushu-u.ac.jp/0009/0006/lecture/10.pdf http://nanoappli.com/blog/archives/3162
noname#203464
回答No.1
>MIPSのbne命令 何のことかわかりませんが >ジャンプ先アドレスが16bitを超えてしまうような場合は 一般には、もっと遠距離をジャンプする命令も用意されてるはずなのでこれを併用し 2段ジャンプすることになります。 ユーザーレベルなどのプロテクトがあるCPUの場合、16bit内に収まらないジャンプは 他モジュールや他ユーザレベルへのジャンプと同義で、OS配下のプログラムなら 所定の手続きが必要だったりします。 分岐先が遠方なのはメンテしにくいのでなるべく避ける方がいいと思います。