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

BRA

BRA

相対分岐 (ぶら)


BRA.W <label>

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

命令コード

アドレス1514131211109876543210
+00110000000000000
+2ワードオフセット

実行時間

680006801068020680306804068060
10(2/0)10(2/0)🚧🚧🚧予測あり0
予測なし3
(2/0)

コンディションコード

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

解説

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

BRA.L <label>

68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+00110000011111111
+2ロングワードオフセットの上位ワード
+4ロングワードオフセットの下位ワード

実行時間

68020680306804068060
🚧🚧🚧予測あり0
予測なし3

コンディションコード

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

解説

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

BRA.S <label>

68000/68010 の命令

命令コード

アドレス1514131211109876543210
+001100000バイトオフセット

実行時間

6800068010
10(2※/0)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 で命令の直後に分岐することはできません。アセンブラはそのような命令を出力しませんが、バイトオフセットを自己書き換えするときは注意してください。

68000/68010 は命令の直後のワードを余分に読み込むので、例えば、X68000 でバッテリバックアップ SRAM にプログラムを詰め込んで最後のワードまで使い切ったとき、最後のワードが BRA.S <label> だと、そこで次のワードを読み込もうとしてバスエラーが発生します。


BRA.S <label>

68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+001100000バイトオフセット

実行時間

68020680306804068060
🚧🚧🚧予測あり0
予測なし3
(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 で命令の直後に分岐することはできません。アセンブラはそのような命令を出力しませんが、バイトオフセットを自己書き換えするときは注意してください。