or


論理和を行います。(Or)

[指定形式]

-

or reg1, reg2

-

or imm, reg2

 

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

-

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

-

相対値式

[機能]

-

“or reg1, reg2”の形式

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

-

“or imm, reg2”の形式

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

[詳細説明]

-

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

-

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

(a)

0

or      0, reg
or      r0, reg

(b)

1〜65535の範囲の絶対値式

or      imm16, reg
ori     imm16, reg, reg

(c)

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

or      imm5, reg
mov     imm5, r1
or      r1, reg

(d)

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

or      imm16, reg
movea   imm16, r0, r1
or      r1, reg

(e)

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

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

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

上記以外の場合

or      imm, reg
mov     imm, r1
or      r1, reg

(f)

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

or      !label, reg
ori     !label, reg, reg
or      %label, reg
ori     %label, reg, reg

(g)

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

or      $label, reg
movea   $label, r0, r1
or      r1, reg

(h)

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

or      #label, reg
mov     #label, r1
or      r1, reg
or      label, reg
mov     label, r1
or      r1, reg
or      $label, reg
mov     $label, r1
or      r1, reg

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

[フラグ]

CY

OV

0

S

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

Z

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

SAT