tst1


ビット・テストを行います。(Test Bit)

[指定形式]

-

tst1 bit#3, disp[reg1]

-

tst1 reg2, [reg1]

 

dispに指定できるものを次に示します。

-

32ビット幅までの値を持つ絶対値式

-

相対値式

-

上記のものにLOWWを適用したもの

注意

“tst1 reg2, [reg1]”の形式ではdispは指定できません。

[機能]

-

“tst1 bit#3, disp[reg1]”の形式

第2オペランドで指定したアドレスが示すデータの,第1オペランドに指定したビットの値に従い,フラグのみを設定します。第2オペランドの値,および指定したビットは変更されません。

-

“tst1 reg2, [reg1]”の形式

第2オペランドで指定したアドレスが示すデータの,第1オペランドで指定したレジスタ値が示すビットの値に従い,フラグのみを設定します。第2オペランドの値,および指定したビットは変更されません。

[詳細説明]

-

dispに次のものを指定した場合,アセンブラでは,機械語命令のtst1命令が1つ生成されます。

(a)

-32768〜+32767の範囲の絶対値式

tst1    bit#3, disp16[reg1]
tst1    bit#3, disp16[reg1]

(b)

sdata/sbss属性セクションに定義を持つラベルの$labelを持つ相対値式

tst1    bit#3, $label[reg1]
tst1    bit#3, $label[reg1]

(c)

!label,または%labelを持つ相対値式

tst1    bit#3, !label[reg1]
tst1    bit#3, !label[reg1]
tst1    bit#3, %label[reg1]
tst1    bit#3, %label[reg1]

(d)

LOWWを適用したもの

tst1    bit#3, LOWW(value)[reg1]
tst1    bit#3, LOWW(value)[reg1]

機械語命令のtst1命令は,ディスプレースメントに-32768〜+32767(0xFFFF8000〜0x7FFF)の範囲のイミーディエトをとります。

 

-

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

(a)

-32768〜+32767の範囲を越える絶対値式

tst1    bit#3, disp[reg1]
movhi   HIGHW1(disp), reg1, r1
tst1    bit#3, LOWW(disp)[r1]

(b)

#label,またはlabelを持つ相対値式,およびsdata/sbss属性セクションに定義を持たないラベルの$labelを持つ相対値式

tst1    bit#3, #label[reg1]
movhi   HIGHW1(#label), reg1, r1
tst1    bit#3, LOWW(#label)[r1]
tst1    bit#3, label[reg1]
movhi   HIGHW1(label), reg1, r1
tst1    bit#3, LOWW(label)[r1]
tst1    bit#3, $label[reg1]
movhi   HIGHW1($label), reg1, r1
tst1    bit#3, LOWW($label)[r1]

 

-

dispを省略した場合,アセンブラでは,0が指定されたものとみなされます。

-

dispに#labelを持つ相対値式,または#labelを持つ相対値式にLOWWを適用したものを指定した場合,その後ろの[reg1]の部分が省略できます。ただし,省略した場合,アセンブラでは,[r0]が指定されたものとみなされます。

-

dispに$labelを持つ相対値式,または$labelを持つ相対値式にLOWWを適用したものを指定した場合,その後ろの[reg1]の部分が省略できます。ただし,省略した場合,アセンブラでは,[gp]が指定されたものとみなされます。

-

dispに%labelを持つ相対値式,または%labelを持つ相対値式にLOWWを適用したものを指定した場合,その後ろの[reg1]の部分を省略できます。ただし,省略した場合アセンブラでは,[ep]が指定されたものとみなされます。

[フラグ]

CY

OV

S

Z

指定したビットが0の場合1,1の場合0

SAT