アプリ版:「スタンプのみでお礼する」機能のリリースについて

場所をお借りして質問させていただきます。

MIPSのbne命令は、ジャンプ先アドレスが16bit以内だと聞いたのですが、
もし、ジャンプ先アドレスが16bitを超えてしまうような場合はどのように処理しているのでしょうか。

回答よろしくお願いいたします。

A 回答 (2件)

>MIPSのbne命令



何のことかわかりませんが

>ジャンプ先アドレスが16bitを超えてしまうような場合は

一般には、もっと遠距離をジャンプする命令も用意されてるはずなのでこれを併用し
2段ジャンプすることになります。

ユーザーレベルなどのプロテクトがあるCPUの場合、16bit内に収まらないジャンプは
他モジュールや他ユーザレベルへのジャンプと同義で、OS配下のプログラムなら
所定の手続きが必要だったりします。

分岐先が遠方なのはメンテしにくいのでなるべく避ける方がいいと思います。
    • good
    • 0

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!