Everything

and, or, xor


-

デバイスのand,or,xor命令は次の形式です。

-

AND reg1, reg2

-

OR reg1, reg2

-

XOR reg1, reg2

 

-

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

-

and imm, reg2

-

or imm, reg2

-

xor imm, reg2

 

-

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

(a)

0

指定形式

アセンブル結果

and      0, reg
and      r0, reg

(b)

1~65535の範囲の絶対値式

指定形式

アセンブル結果

and      imm16, reg
andi     imm16, reg, reg

(c)

-16~-1の範囲の絶対値式

指定形式

アセンブル結果

and      imm5, reg
mov     imm5, r1
and     r1, reg

(d)

-32768~-17の範囲の絶対値式

指定形式

アセンブル結果

and      imm16, reg
movea   imm16, r0, r1
and     r1, reg

(e)

上記の範囲を越える絶対値式

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

指定形式

アセンブル結果

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

 

上記以外の場合

指定形式

アセンブル結果

and      imm, reg
mov     imm, r1
and     r1, reg

(f)

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

指定形式

アセンブル結果

and      !label, reg
andi     !label, reg, reg
and      %label, reg
andi     %label, reg, reg

(g)

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

指定形式

アセンブル結果

and      $label, reg
movea   $label, r0, r1
and     r1, reg

(h)

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

指定形式

アセンブル結果

and      #label, reg
mov     #label, r1
and     r1, reg
and      label, reg
mov     label, r1
and     r1, reg
and      $label, reg
mov     $label, r1
and     r1, reg