ルネサス
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の範囲の絶対値式
movea imm16, r0, r1
(e)
上記の範囲を越える絶対値式
immの値の下位16ビットがすべて0の場合
and imm, reg
movhi HIGHW(imm), r0, r1
上記以外の場合
mov imm, r1
(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
(h)
#label,またはlabelを持つ相対値式,およびsdata/sbss属性セクションに定義を持たないラベルの$labelを持つ相対値式
and #label, reg
mov #label, r1
and label, reg
mov label, r1
mov $label, r1