반응형
Data processing 중에 Logical instruction을 알아보자
Logical
1. AND
- 말 그대로 AND 연산을 시키는데 bit by bit을 시키는 것이다. 단순히 AND R0, R0, #3이라고 하면 3은 마지막만 11이고 나머지는 다 0이니 11과 R0의 마지막 xx와 and 연산을 시켜서 R0에 넣어주면 된다.
2. ORR
- AND와 똑같이 bit 연산을 시키는 or 연산자이다.
3. EOR
- XOR과 똑같다. eor r0, r0, r0라고 한다면 어떻게 될까? xor은 1이 짝수면 0이고 홀수면 1이다. 조금 다르게 보면 00, 11일 때는 0이고 나머지는 1이다. 이럴 때, 같은 operand라면 결국 둘 다 똑같기 때문에 0으로 초기화되는 효과가 있다.
만약 eor r0, r0, #3이라면 3은 마지막 2 bit가 11이고 나머지는 다 0이다. 이때 xor는 첫 번째 operand가 0일 때는 두 번째 operand가 그대로 나오고 1이라면 두 번째 operand가 inverting 되어서 나온다. 즉, inverting을 하거나 0으로 초기화할 때 유용하게 사용된다.
4. BIC ( bit clear )
- 두 번째 operand를 inverting 하고 첫 번째 operand와 and 연산을 수행한다. 즉, 어떤 bit를 clear 하고 싶을 때 사용한다. 내가 clear 하고 싶은 bit를 두 번째 operand에 1로 세팅하면 된다. 예를 들어보면
Before
r1 = 0b1111
r2 = 0b0101
bic r0, r1, r2
After
r1 = 0b1111
r2 = 0b1010
r0 = 0b1010
이와 같이 r0의 결과가 나온다.
반응형
'시스템 반도체 > Arm' 카테고리의 다른 글
Arm Aruthmetic instruction ( 산술 명령어, ADD, ADC, SUB, SBC, RSB, RSC, CLZ ) (0) | 2022.04.07 |
---|---|
Arm Move instruction ( 이동 명령어, MOV, MVN, MOVS ) (0) | 2022.04.07 |
Arm Comparison instruction ( 비교 명령어, CMP, CMN, TEQ, TST ) (0) | 2022.04.07 |
Arm 명령어 구조 ( Instruction Format, 동작 ) (0) | 2022.04.07 |
Arm register 종류 ( SP, LR, PC, NZCV, CPSR, APSR, CPS 명령어) (0) | 2022.04.07 |
댓글