countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2023 年 7 月 6 日
X68000 LIBRARY > 資料室 > 命令セットリファレンス(準備中) > B > Bcc

Bcc

Bcc

条件付き相対分岐 (びーしーしー)


条件

条件コードBccBNcc※説明
0010BHIBNLS~C&~Z符号なし比較で大きいとき分岐、さもなくば通過
1BLSBNHIC|Z符号なし比較で小さいか等しいとき分岐、さもなくば通過
100BCCBNCS~Cキャリーがないとき分岐、さもなくば通過
BHSBNLO符号なし比較で大きいか等しいとき分岐、さもなくば通過
1BCSBNCCCキャリーがあるとき分岐、さもなくば通過
0BLOBNHS符号なし比較で小さいとき分岐、さもなくば通過
1BNEBNEQ~Z等しくないとき分岐、さもなくば通過
0BNZBNZEゼロでないとき分岐、さもなくば通過
11BEQBNNEZ等しいとき分岐、さもなくば通過
00BZEBNNZゼロのとき分岐、さもなくば通過
10BVCBNVS~Vオーバーフローがないとき分岐、さもなくば通過
1BVSBNVCVオーバーフローがあるとき分岐、さもなくば通過
10BPLBNMI~N正のとき分岐、さもなくば通過
1BMIBNPLN負のとき分岐、さもなくば通過
100BGEBNLT(N&V)|(~N&~V)符号あり比較で大きいか等しいとき分岐、さもなくば通過
1BLTBNGE(N&~V)|(~N&V)符号あり比較で小さいとき分岐、さもなくば通過
10BGTBNLE(N&V&~Z)|(~N&~V&~Z)符号あり比較で大きいとき分岐、さもなくば通過
1BLEBNGTZ|(N&~V)|(~N&V)符号あり比較で小さいか等しいとき分岐、さもなくば通過

※ BNcc は HAS060.X で拡張された書き方です。


Bcc.W <label>

68000/68010/68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+00110条件コード00000000
+2ワードオフセット

実行時間

680006801068020680306804068060
分岐10
通過12
(2/0)
分岐10
通過12
(2/0)
🚧🚧🚧予測通り分岐0
予測通り通過1
予測なし前方通過1
予測なし後方分岐3
予測なし前方分岐7
予測なし後方通過7
予測外れ7
(2/0)

コンディションコード

フラグ入力出力
X使用しない変化しない
N使用する※
Z
V
C

※条件の式にあるフラグを使用します。

解説

  1. ワードオフセットを Yw とします。
  2. Yw をロングワードに符号拡張したものを Yl とします。
  3. 条件が成立しているとき命令の先頭アドレス +2+Yl を PC へ書き込みます。

Bcc.L <label>

68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+00110条件コード11111111
+2ロングワードオフセットの上位ワード
+4ロングワードオフセットの下位ワード

実行時間

68020680306804068060
🚧🚧🚧予測通り分岐0
予測通り通過1
予測なし前方通過1
予測なし後方分岐3
予測なし前方分岐7
予測なし後方通過7
予測外れ7

コンディションコード

フラグ入力出力
X使用しない変化しない
N使用する※
Z
V
C

※条件の式にあるフラグを使用します。

解説

  1. ロングワードオフセットを Yl とします。
  2. 条件が成立しているとき命令の先頭アドレス +2+Yl を PC へ書き込みます。

Bcc.S <label>

68000/68010 の命令

命令コード

アドレス1514131211109876543210
+00110条件コードバイトオフセット

実行時間

6800068010
通過8
分岐10
(2※/0)
通過8
分岐10
(2※/0)

※ 68000/68010 は命令の直後のワードを余分に読み込みます。

コンディションコード

フラグ入力出力
X使用しない変化しない
N使用する※
Z
V
C

※条件の式にあるフラグを使用します。

解説

  1. 68000/68010 は命令の直後のワードを余分に読み込みます。
  2. バイトオフセットを Yb とします。
  3. Yb をロングワードに符号拡張したものを Yl とします。
  4. 条件が成立しているとき命令の先頭アドレス +2+Yl を PC へ書き込みます。

BRA.S/BSR.S/Bcc.S の命令コードのバイトオフセットの部分に $00 を入れると BRA.W/BSR.W/Bcc.W の命令コードになります。すなわち、BRA.S/BSR.S/Bcc.S で命令の直後に分岐することはできません。アセンブラはそのような命令を出力しませんが、バイトオフセットを自己書き換えするときは注意してください。


Bcc.S <label>

68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+00110条件コードバイトオフセット

実行時間

68020680306804068060
🚧🚧🚧予測通り分岐0
予測通り通過1
予測なし前方通過1
予測なし後方分岐3
予測なし前方分岐7
予測なし後方通過7
予測外れ7
(1/0)

コンディションコード

フラグ入力出力
X使用しない変化しない
N使用する※
Z
V
C

※条件の式にあるフラグを使用します。

解説

  1. バイトオフセットを Yb とします。
  2. Yb をロングワードに符号拡張したものを Yl とします。
  3. 条件が成立しているとき命令の先頭アドレス +2+Yl を PC へ書き込みます。

BRA.S/BSR.S/Bcc.S の命令コードのバイトオフセットの部分に $00 を入れると BRA.W/BSR.W/Bcc.W の命令コードになります。すなわち、BRA.S/BSR.S/Bcc.S で命令の直後に分岐することはできません。アセンブラはそのような命令を出力しませんが、バイトオフセットを自己書き換えするときは注意してください。