xor


排他的論理和を行います。(Exclusive Or)

[指定形式]

-

xor reg1, reg2

-

xor imm, reg2

 

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

-

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

-

相対値式

[機能]

-

“xor reg1, reg2”の形式

第1オペランドに指定したレジスタ値と,第2オペランドに指定したレジスタ値の排他的論理和をとり,結果を第2オペランドに指定したレジスタに格納します。

-

“xor imm, reg2”の形式

第1オペランドに指定した絶対値式,または相対値式の値と,第2オペランドに指定したレジスタ値の排他的論理和をとり,結果を第2オペランドに指定したレジスタに格納します。

[詳細説明]

-

“xor reg1, reg2”の形式の命令に対し,アセンブラでは,機械語命令のxor命令が1つ生成されます。

-

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

(a)

0

xor     0, reg
xor     r0, reg

(b)

1〜65535の範囲の絶対値式

xor     imm16, reg
xori    imm16, reg, reg

(c)

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

xor     imm5, reg
mov     imm5, r1
xor     r1, reg

(d)

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

xor     imm16, reg
movea   imm16, r0, r1
xor     r1, reg

(e)

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

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

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

上記以外の場合

xor     imm, reg
mov     imm, r1
xor     r1, reg

(f)

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

xor     !label, reg
xori  !label, reg, reg
xor     %label, reg
xori  %label, reg, reg

(g)

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

xor     $label, reg
movea   $label, r0, r1
xor     r1, reg

(h)

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

xor     #label, reg
mov     #label, r1
xor     r1, reg
xor     label, reg
mov     label, r1
xor     r1, reg
xor     $label, reg
mov     $label, r1
xor     r1, reg

機械語命令のxor命令は,オペランドにイミーディエトをとりません。

[フラグ]

CY

OV

0

S

演算結果のワード・データのMSBが1の場合1,そうでない場合0

Z

結果が0になった場合1,そうでない場合0

SAT