Everything

not, satsubr, sub, subr, tst


-

デバイスのnot,satsubr,sub,subr,tst命令は次の形式です。

-

NOT reg1, reg2

-

SATSUBR reg1, reg2

-

SUB reg1, reg2

-

SUBR reg1, reg2

-

TST reg1, rg2

 

-

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

-

not imm, reg2

-

satsubr imm, reg2

-

sub imm, reg2

-

subr imm, reg2

-

tst imm, reg2

 

-

“not imm, reg2”,“satsubr imm, reg2”,“sub imm, reg2”,“subr imm, reg2”,“tst imm, reg2”の形式でimmに次のものを指定した場合,アセンブラでは,命令展開が行われ,1つ,または複数個の機械語命令が生成されます。

(a)

0

指定形式

アセンブル結果

not     0, reg
not     r0, reg

(b)

0以外の-16~+15の範囲の絶対値式

指定形式

アセンブル結果

not     imm5, reg
mov     imm5, r1
not     r1, reg

(c)

-16~+15の範囲を越え,-32768~+32767の範囲の絶対値式

指定形式

アセンブル結果

not     imm16, reg
movea   imm16, r0, r1
not     r1, reg

(d)

immに-32768~+32767の範囲を越える絶対値式

immの値の下位16ビットがすべて0の場合

指定形式

アセンブル結果

not     imm, reg
movhi   HIGHW(imm), r0, r1
not     r1, reg

 

上記以外の場合

指定形式

アセンブル結果

not     imm, reg
mov     imm, r1
not     r1, reg

(e)

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

指定形式

アセンブル結果

not     !label, reg
movea   !label, r0, r1
not     r1, reg
not     %label, reg
movea   %label, r0, r1
not     r1, reg
not     $label, reg
movea   $label, r0, r1
not     r1, reg

(f)

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

指定形式

アセンブル結果

not     #label, reg
mov     #label, r1
not     r1, reg
not     label, reg
mov     label, r1
not     r1, reg
not     $label, reg
mov     $label, r1
not     r1, reg