본문 바로가기
시스템 반도체/Arm

Arm Logical Instruction ( 논리 명령어, AND, ORR, EOR, BIC )

by 전컴반 2022. 4. 7.
반응형

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의 결과가 나온다.

 

반응형

댓글