bcond


-

デバイスのbcond命令は次の形式です。

-

Bcond disp9

-

Bcond disp17

 

-

asrhでは,上記に加えて,次の形式も指定できます。

-

bcond9 disp9

-

bcond17 disp17

-

jcond disp9

-

jcond9 disp9

-

jcond17 disp17

-

jbr disp

 

-

bcond9,bcond17は,常に固定のdisp幅で出力したい場合に指定します。これらは命令展開の対象になりません。

-

jcond,jcond9,jcond17は,bcond,bcond9,bcond17と同じ意味です。

-

jbrは,brと同じ意味です。

-

condに指定可能な記述を「表 5.28 bcond命令」に示します。

表 5.28

bcond命令

命令

フラグ状態

フラグ状態の意味

bgt

((S xor OV)or Z)= 0

Greater than(signed)

bge

(S xor OV)= 0

Greater than or equal(signed)

blt

(S xor OV)= 1

Less than(signed)

ble

((S xor OV)or Z)= 1

Less than or equal(signed)

bh

(CY or Z)= 0

Higher(Greater than)

bnl

CY = 0

Not lower(Greater than or equal)

bl

CY = 1

Lower(Less than)

bnh

(CY or Z)= 1

Not higher(Less than or equal)

be

Z = 1

Equal

bne

Z = 0

Not equal

bv

OV = 1

Overflow

bnv

OV = 0

No overflow

bn

S = 1

Negative

bp

S = 0

Positive

bc

CY = 1

Carry

bnc

CY = 0

No carry

bz

Z = 1

Zero

bnz

Z = 0

Not zero

br

Always(無条件)

bsa

SAT = 1

Saturated

-

asrhでは,bt,bf命令は指定できません。

-

disp22 に次のものを指定した場合,アセンブラでは命令展開が行われ,複数の機械語命令が生成されます。

(a)

-256〜+255の範囲を越え,-65536〜+65535の範囲の絶対値式,または本命令と同じファイル内の同じセクションに定義を持つラベルのPCオフセット参照を持ち,-256〜+255の範囲を越え,-65536〜+65535の範囲の相対値式

br     disp17
jr      disp17
bcond  disp17
bcond   disp17

(b)

-65536〜+65535の範囲を越え,-2097150〜+2097153の範囲注1の絶対値式,または本命令と同じファイル内の同じセクションに定義を持つラベルのPCオフセット参照を持ち-65536〜+65535の範囲を越える範囲の相対値式,または本命令と同じファイル内に定義を持っていないか同じセクションに定義を持っていないラベルのPCオフセット参照を持つ相対値式

br      disp22
jr      disp22
bsa     disp22
    bsa     Label1
    br      Label2
Label1:
    jr      disp22 - 4
Label2:
bcond   disp22
bncond      Label 注2
    jr      disp22 - 2
Label:

注 1.

-2097150〜+2097153の範囲はbrおよびbsa命令以外の命令の場合の範囲で,br命令の場合は-2097152〜+2097151,bsa命令の場合は-2097148〜+2097155となります。

注 2.

bncondは,たとえばbzに対するbnz,bgtに対するbleというように逆の条件で分岐を行う命令を示しています。