4.3.4. AND, ORR, EOR, BIC 및 ORN
논리 AND, OR, 배타적 OR, 비트 지우기 및 OR NOT
op{S}{cond}Rd,Rn,Operand2
인수 설명:
op다음 중 하나입니다.
AND논리 AND
ORR논리 OR
EOR논리 배타적 OR
BIC논리 AND NOT
ORN논리 OR NOT (Thumb-2에만 해당)
S선택적 접미사입니다.
S를 지정하면 연산 결과의 조건 코드 플래그가 업데이트됩니다 (조건부 실행 참조).cond선택적 조건 코드입니다 (조건부 실행 참조).
Rd대상 레지스터입니다.
Rn첫 번째 피연산자가 들어 있는 레지스터입니다.
Operand2유연한 두 번째 피연산자입니다. 옵션에 대한 자세한 내용은 유연한 두 번째 피연산자를 참조하십시오.
AND, EOR 및 ORR 명령어는 및 Rn의 값에 대해 비트 AND, 배타적 OR 및 OR 연산을 수행합니다.Operand2
BIC (비트 지우기) 명령어는 값의 해당 비트 보수가 포함된 Operand2의 비트에 대해 AND 연산을 수행합니다.Rn
ORN Thumb-2 명령어는 값의 해당 비트 보수가 포함된 Operand2의 비트에 대해 OR 연산을 수행합니다.Rn
경우에 따라 어셈블러가 BIC를 AND로, AND를 BIC로, ORN을 ORR로 또는 ORR을 ORN으로 대체할 수 있습니다. 디스어셈블리 목록을 읽을 때는 이러한 사항에 주의해야 합니다. 자세한 내용은 명령어 대체를 참조하십시오.
Note
이러한 ARM 명령어에서 pc를 향후 사용할 수 없습니다.
pc를 으로 사용하면 명령어 주소에 8을 더한 값이 사용됩니다.Rn
pc를 로 사용할 경우 다음 사항이 적용됩니다.Rd
실행이 결과에 해당하는 주소로 분기됩니다.
S접미사를 사용하면 현재 모드의 SPSR이 CPSR로 복사됩니다. 이 접미사를 사용하여 예외에서 복귀할 수 있습니다 (개발자 설명서의 6장 프로세서 예외 처리 참조).
Caution
사용자 모드 또는 시스템 모드에서 pc를 로 사용할 경우 RdS 접미사를 사용하면 안 됩니다. 이러한 명령어를 실행하면 예상할 수 없는 결과가 발생하지만 어셈블러에서 어셈블리 타임에 경고를 표시할 수 없습니다.
레지스터에 의해 제어된 시프트가 있는 데이터 처리 명령어에서는 피연산자에 pc를 사용할 수 없습니다 (유연한 두 번째 피연산자 참조).
S를 지정하면 이러한 명령어는 다음을 수행합니다.
결과에 따라 N 및 Z 플래그를 업데이트합니다.
를 계산하는 동안 C 플래그를 업데이트할 수 있습니다 (유연한 두 번째 피연산자 참조).Operand2V 플래그를 변경하지 않습니다.
이러한 명령어의 다음 형식은 Thumb-2 이전 Thumb 코드에서 사용할 수 있으며, Thumb-2 코드에서 사용될 경우 16비트 명령어입니다.
ANDSRd,Rd,Rm및Rd은 모두 Lo 레지스터여야 합니다.RmEORSRd,Rd,Rm및Rd은 모두 Lo 레지스터여야 합니다.RmORRSRd,Rd,Rm및Rd은 모두 Lo 레지스터여야 합니다.RmBICSRd,Rd,Rm및Rd은 모두 Lo 레지스터여야 합니다.Rm
처음 세 경우에서는 를 지정하는지 여부에 관계없이 명령어가 동일합니다.OPS Rd, Rm, Rd
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, r14, ROR #4
ORNS r7, r11, r14, ASR #32
출처 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ik/Cihdafai.html