AND、ORR、EOR、BIC、ORN

論理積、論理和、排他的論理和(XOR)、ビットクリア、および論理和否定です。

Show/hide構文

op{S}{cond} Rd, Rn, Operand2

各パラメータには以下の意味があります。

op

次のいずれかを指定します。

AND

論理積

ORR

論理和

EOR

排他的論理和(XOR)

BIC

論理積否定

ORN

論理和否定(Thumb のみ)

S

任意に指定できる接尾文字です。S が指定されている場合は、演算結果に基づいて条件コードフラグが更新されます。

cond

任意の条件コードを指定します。

Rd

デスティネーションレジスタを指定します。

Rn

第 1 オペランドを保持するレジスタを指定します。

Operand2

フレキシブル第 2 オペランドを指定します。

Show/hide使用法

ANDEOR、および ORR の各命令は、RnOperand2 の値に対し、それぞれビットごとの論理積、排他的論理和(XOR)、および論理和を取ります。

BIC(ビットクリア)命令は、Rn 内のビットと、Operand2 の値に含まれる、対応する各ビットの補数との論理積を取ります。

ORN Thumb 命令は、Rn 内のビットと、Operand2 の値に含まれる、対応する各ビットの補数との論理和を取ります。

状況によっては、アセンブラが BICAND に、ANDBIC に、ORNORR に、ORRORN に置き換える場合があります。逆アセンブルリストを参照するときは、この点に注意して下さい。

Show/hide32 ビット Thumb 命令での PC の使用

すべての命令で、Rd、または任意のオペランドに PC (R15)は使用できません。

Show/hideARM 命令での PC および SP の使用

PC および SP はこれらの ARM 命令で使用できますが、それらは ARMv6T2 以降では非推奨です。

Rn に PC を指定している場合、使用される値は「命令のアドレス + 8」となります。

Rd に PC を指定した場合、以下のようになります。

  • 演算結果に対応するアドレスへの分岐が実行されます。

  • S 接尾文字を使用する場合は、SUBS pc,lr 命令を参照して下さい。

レジスタ制御シフトを行うデータ処理命令の場合は、オペランドに PC は使用できません。

Show/hide条件フラグ

S が指定されている場合、これらの命令では、以下のようになります。

  • 結果に応じて N フラグおよび Z フラグを更新します。

  • Operand2 の計算中に C フラグを更新することが可能です。

  • V フラグは更新しません。

Show/hide16 ビット命令

これらの命令は、Thumb コード内では次の形式で使用できます。これらは 16 ビット命令です。

ANDS Rd, Rd, Rm

RdRm は共に Lo レジスタである必要があります。

EORS Rd, Rd, Rm

RdRm は共に Lo レジスタである必要があります。

ORRS Rd, Rd, Rm

RdRm は共に Lo レジスタである必要があります。

BICS Rd, Rd, Rm

RdRm は共に Lo レジスタである必要があります。

最初の 3 つの例は、OPS Rd, Rm, Rd を指定しても問題はありません。命令は変わりません。

Show/hide

    AND     r9,r2,#0xFF00
    ORREQ   r2,r0,r5
    EORS    r0,r0,r3,ROR r6
    ANDS    r9, r8, #0x19
    EORS    r7, r11, #0x18181818
    BIC     r0, r1, #0xab
    ORN     r7, r11, lr, ROR #4
    ORNS    r7, r11, lr, ASR #32

Show/hide誤用例

    EORS    r0,pc,r3,ROR r6     ; PC とレジスタ制御シフトは
                                ; 一緒に指定できない

Show/hide関連項目

概念

『ARM プロセッサをターゲットとしたソフトウェア開発』

参照
Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0489FJ
Non-ConfidentialID111211