ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 처리 명령어 - AND, ORR, EOR
    WINCE/Assembly 2012. 1. 1. 23:28

    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

    유연한 두 번째 피연산자입니다. 옵션에 대한 자세한 내용은 유연한 두 번째 피연산자를 참조하십시오.

    사용법

    ANDEOR 및 ORR 명령어는 Rn 및 Operand2의 값에 대해 비트 AND, 배타적 OR 및 OR 연산을 수행합니다.

    BIC (비트 지우기) 명령어는 Operand2 값의 해당 비트 보수가 포함된 Rn의 비트에 대해 AND 연산을 수행합니다.

    ORN Thumb-2 명령어는 Operand2 값의 해당 비트 보수가 포함된 Rn의 비트에 대해 OR 연산을 수행합니다.

    경우에 따라 어셈블러가 BIC를 AND로, AND를 BIC로, ORN을 ORR로 또는 ORR을 ORN으로 대체할 수 있습니다. 디스어셈블리 목록을 읽을 때는 이러한 사항에 주의해야 합니다. 자세한 내용은 명령어 대체를 참조하십시오.

    Thumb-2 명령어에서 pc 사용

    이러한 명령어의 Rd 또는 피연산자에 pc (r15) 를 사용할 수 없습니다.

    ARM 명령어에서 pc 사용

    Note

    이러한 ARM 명령어에서 pc를 향후 사용할 수 없습니다.

    pc를 Rn으로 사용하면 명령어 주소에 8을 더한 값이 사용됩니다.

    pc를 Rd로 사용할 경우 다음 사항이 적용됩니다.

    • 실행이 결과에 해당하는 주소로 분기됩니다.

    • S 접미사를 사용하면 현재 모드의 SPSR이 CPSR로 복사됩니다. 이 접미사를 사용하여 예외에서 복귀할 수 있습니다 (개발자 설명서의 6장 프로세서 예외 처리 참조).

    Caution

    사용자 모드 또는 시스템 모드에서 pc를 Rd로 사용할 경우 S 접미사를 사용하면 안 됩니다. 이러한 명령어를 실행하면 예상할 수 없는 결과가 발생하지만 어셈블러에서 어셈블리 타임에 경고를 표시할 수 없습니다.

    레지스터에 의해 제어된 시프트가 있는 데이터 처리 명령어에서는 피연산자에 pc를 사용할 수 없습니다 (유연한 두 번째 피연산자 참조).

    조건 플래그

    S를 지정하면 이러한 명령어는 다음을 수행합니다.

    • 결과에 따라 N 및 Z 플래그를 업데이트합니다.

    • Operand2를 계산하는 동안 C 플래그를 업데이트할 수 있습니다 (유연한 두 번째 피연산자 참조).

    • V 플래그를 변경하지 않습니다.

    16비트 명령어

    이러한 명령어의 다음 형식은 Thumb-2 이전 Thumb 코드에서 사용할 수 있으며, Thumb-2 코드에서 사용될 경우 16비트 명령어입니다.

    ANDS RdRdRm

    Rd 및 Rm은 모두 Lo 레지스터여야 합니다.

    EORS RdRdRm

    Rd 및 Rm은 모두 Lo 레지스터여야 합니다.

    ORRS RdRdRm

    Rd 및 Rm은 모두 Lo 레지스터여야 합니다.

    BICS RdRdRm

    Rd 및 Rm은 모두 Lo 레지스터여야 합니다.

    처음 세 경우에서는 OPRdRmRd를 지정하는지 여부에 관계없이 명령어가 동일합니다.

    예제

        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 
Designed by Tistory.