5.1.9 分岐命令の最適選択

(1)

相対無条件分岐命令(BRA)の最適選択

(a)

指定可能な分岐距離指定子

.S 3ビットPC相対(PC+pcdsp:3,3 ≦ pcdsp:3 ≦ 10)

.B 8ビットPC相対(PC+pcdsp:8,-128 ≦ pcdsp:8 ≦ 127)

.W 16ビットPC相対(PC+pcdsp:16,-32768 ≦ pcdsp:16 ≦ 32767)

.A 24ビットPC相対(PC+pcdsp:24,-8388608 ≦ pcdsp:24 ≦ 8388607)

.L レジスタ相対(PC+Rs,-2147483648 ≦ Rs ≦ 2147483647)

*レジスタ相対はオペランドがレジスタの場合のみ選択され、最適選択によって選択されることはありません。

(b)

最適選択

-

アセンブラでは相対無条件分岐命令のオペランドが分岐最適化対象条件を満たす場合、最短の分岐距離を選択します。条件については、5.1.4 (3) 分岐距離指定子を参照してください。

-

条件を満たさないものについては、24ビットPC相対(.A)を選択します。

(2)

相対サブルーチン分岐命令(BSR)の最適選択

(a)

指定可能な分岐距離指定子

.W 16ビットPC相対(PC+pcdsp:16,-32768 ≦ pcdsp:16 ≦ 32767)

.A 24ビットPC相対(PC+pcdsp:24,-8388608 ≦ pcdsp:24 ≦ 8388607)

.L レジスタ相対(PC+Rs,-2147483648 ≦ Rs ≦ 2147483647)

*レジスタ相対はオペランドがレジスタの場合のみ選択され、最適選択によって選択されることはありません。

(b)

最適選択

-

アセンブラでは相対サブルーチン分岐命令のオペランドが分岐最適化対象条件を満たす場合、最短の分岐距離を選択します。条件については、5.1.4 (3) 分岐距離指定子を参照してください。

-

条件を満たさないものについては、24ビットPC相対(.A)を選択します。

(3)

条件分岐命令(BCnd)の最適選択

(a)

指定可能な分岐距離指定子

BEQ.S 3ビットPC相対(PC+pcdsp:3,3 ≦ pcdsp:3 ≦ 10)

BNE.S 3ビットPC相対(PC+pcdsp:3,3 ≦ pcdsp:3 ≦ 10)

BCnd.B 8ビットPC相対(PC+pcdsp:8,-128 ≦ pcdsp:8 ≦ 127)

BEQ.W 16ビットPC相対(PC+pcdsp:16,-32768 ≦ pcdsp:16 ≦ 32767)

BNE.W 16ビットPC相対(PC+pcdsp:16,-32768 ≦ pcdsp:16 ≦ 32767)

(b)

最適選択

-

アセンブラでは条件分岐命令のオペランドが分岐最適化対象条件を満たす場合、論理を反転した条件分岐命令と最適な分岐距離の相対無条件分岐命令を組み合わせた最適な条件分岐コードを選択して生成します。

-

条件を満たさないものについては、8ビットPC相対(.B) または16ビットPC相対(.W)を選択します。

(c)

変換される条件分岐命令に対する代替命令

表 5.28

条件分岐命令の代替規則

条件分岐命令

代替分岐命令

条件分岐命令

代替分岐命令

BNC/BLTU dest

BC ..xx

BRA.A dest

..xx:

BC/BGEU dest

BNC ..xx

BRA.A dest

..xx:

BLEU dest

BGTU ..xx

BRA.A dest

..xx:

BGTU dest

BLEU ..xx

BRA.A dest

..xx:

BNZ/BNE dest

BZ ..xx

BRA.A dest

..xx:

BZ/BEQ dest

BNZ ..xx

BRA.A dest

..xx:

BPZ dest

BN ..xx

BRA.A dest

..xx:

BO dest

BNO ..xx

BRA.A dest

..xx:

BGT dest

BLE ..xx

BRA.A dest

..xx:

BLE dest

BGT ..xx

BRA.A dest

..xx:

BGE dest

BLT ..xx

BRA.A dest

..xx:

BLT dest

BGE ..xx

BRA.A dest

..xx:

上記は相対無条件分岐命令の分岐距離が24ビットPC相対の場合を記します。

“..xx”ラベルおよび相対無条件分岐命令は内部的に処理されるものであり、アセンブルリストファイルにはコードのみ生成されます。