강좌 & 팁
안녕하세요.
오늘도 역시 ARM 명령어를 배워 보겠습니다!
저번글에서는 논리 연산 명령어 중 ORR 명령을 공부했습니다.
오늘도 논리 연산 중 하나를 선택하여 프로그램 해보겠습니다.
EOR 명령어
저번 글에서도 설명했듯이,
논리 명령어는 2개의 소스 레지스터에 비트 단위로 논리 연산을 수행하는 기능을 가지고 있습니다. ^^
그 중 EOR 명령어는 32 비트 EOR 논리 연산을할 수 있는 기능을 가지고 있습니다.
EOR은 우리가 알고 있는 XOR 연산을 말합니다.
EOR 명령어를 이용하여 비트 연산이 어떻게 이루어 지는지 실습해 보겠습니다 ^^
1. 프로그램
오늘도 역시 프로그램을 먼저 해보고 설명을 하겠습니다.
다음은 EOR 명령을 이용한 eor.c 예제 프로그램 입니다.
#include <stdio.h>
int asm_eor_ex ( int x, int y );
asm(" \n\
.global asm_eor _ex \n\
asm_eor_ex: \n\
eor r0, r1 \n\
mov pc, lr \n\
");
int main ( void )
{
int eor;
printf("\n+-------------------+\n");
printf("|ARMInstruction EOR|\n");
printf("+-------------------+\n\n");
eor = asm_eor_ex( 10, 2);
printf("eor = %d\n\n", eor );
return 0;
}
결과를 예상해 보세요~^^
2. 프로그램 설명
핵심이 되는 소스는 당연 다음과 같습니다.
eor r0, r1
위의 코드가 되겠습니다.
r0와 r1 레지스터에는 각각 다음과 같은 코드로 표현할 수 있습니다.
r0 = 10
r1 = 2
두 값을 EOR 연산하면 값이 어떻게 나올까요?
10 진수인 10과 2를 2진수로 변환한 다음 계산해 보면 아주~ 간단합니다.
십진수 10을 2진수로 바꾸면?
1010
십진수 2를 2진수로 바꾸면?
0010
이진수로 변환한 1010과 0010을 EOR 연산을 하면?
1010 | 0010 = 1000
결과 값은 1000이 나왔습니다!
십진수로 변환하면 값은 8 이겠죠?
정말 8이 나오는지 확인해 보아야 겠죠!?
3. 프로그램 실행화면
실행 결과는 다음과 같습니다.
예상한 결과인 8이 정확하게 나왔습니다!
여러분들도 이렇게 출력 되나요?
앞으로?
다음글에도 역시~ ARM 명령어 중 하나를 선택하여 공부해 보겠습니다.
빠른만남을 원하시면 http://ms-osek.org/ 여기로 찾아오세요~