// 相対ジャンプ [ IF <cond> ] JUMP <ofst13> [ (DB) ]; JUMP <ofst16> [(DB)]; // ロングジャンプ(絶対アドレス) [ IF <cond> ] LJUMP <imm24>; // 間接ジャンプ [ IF <cond> ] JUMP (<ireg>) [ (DB) ];
          // 相対ジャンプ
IF NE JUMP jump_target;       // ラベル "jump_target" へ分岐
IF EQ JUMP jump_target (DB);  // 遅延分岐
JUMP jump_target;             // 無条件分岐
          // ロングジャンプ
LJUMP jump_target;
          // 間接ジャンプ
JUMP (I7) (DB);
ジャンプ命令です。実行すると、命令実行アドレスが変わります。
ジャンプ先アドレスをPC相対であらわすか絶対番地で表すかは命令によって変わります。ただし、プログラマはこれを意識する必要はありません。必要な形式の選択はアセンブラが自動的に行うからです。プログラマは単にジャンプ先のラベルを与えてください。
間接ジャンプを行う場合、IREGが与えるのは下位16ビットのアドレスだけです。上位8ビットはIJPGレジスタによって与えられます。
パイプライン・アーキテクチャーを採っているため、ジャンプ命令は必ずストールを起こします。ジャンプ命令の実行には5サイクルかかるため、4サイクルのストールが生じます。
(DB)オプションをつけると遅延分岐を行います。この場合、ジャンプ命令の次の2命令を無条件に実行するため、ストールが2サイクルに緩和されます。遅延分岐を行う時に注意が必要なのは即値DMストア命令と即値PMストア命令です。この二つは2ワード命令であるため、2命令分の場所を占有してしまいます。この命令を遅延スロットで実行する場合には遅延スロットの1スロット目に配置してください。なお、遅延スロットには以下の命令を置くことはできません。
ジャンプ命令実行時のオーバーヘッドや制限についての詳細はISRの8-27ページと、HRMの3-13ページ"Branches and Sequencing"を参照してください。
<ofst13> ::= 13ビット即値による、ジャンプ先への相対オフセット
<imm24> ::= 24ビット即値による、ジャンプ先の絶対アドレス
<ireg>  ::= I0, I1, I2, I3, I4, I5, I6, I7
<cond>  ::= EQ, NE, GT, LE, LT, GE, AV, NOT AV, AC, NOT AC,
            SWCOND, NOT SWCOND, MV, NOT MV, NOT CE, TRUE