강좌 & 팁
안녕하세요.
오늘도 ARM 명령어를 공부해 보겠습니다.
TEQ 명령어
TEQ 명령어는 두 개의 32비트값들이 서로 같은지 알아보는 명령어 입니다.
TEQ 명령어는 캐리 플래그를 보전하면서 두 값이 동일한지 확인히 위해 CMP 대신 사용하는 명령어 입니다 ^^
어떻게 동작하는지 프로그램 하나를 만들어 보겠습니다!
1. 프로그램
다음 프로그램은 r0가 1인지 확인하여 맞으면 teq_test()를 호출하고 끝나는 프로그램 입니다.
다음은 teq 명령어를 이용한 teq.c 예제 프로그램 입니다.
#include <stdio.h>
void teq_test ( void )
{
printf("TEQ TEST\n\n");
}
int asm_teq_ex( void );
asm(" \n\
.global asm_teq_ex \n\
asm_teq_ex: \n\
mov r0, #1 \n\
teq r0, #1 \n\
beq teq_test \n\
mov pc, lr \n\
");
int main ( void )
{
printf("\n+--------------------+\n");
printf("|ARM Instruction TEQ|\n");
printf("+---------------------+\n\n");
asm_teq_ex();
printf("Program END\n\n");
return 0;
}
2. 프로그램 설명
프로그램에 핵심이 되는 소스는 다음과 같습니다.
mov r0, #1
teq r0, #1
beq teq_test
오늘 프로그램 엄청 쉽죠!?ㅎ
하나씩 살펴 보겠습니다.
mov r0, #1
은 입 아프게 설명했습니다 ^^
모두 아시죠?
넘어갑니다!
teq r0, #1
오늘 프로그램의 핵심 라인입니다.
위 라인을 실행하면 다음과 같이 표현할 수 있습니다.
r0 == 1
만약 위 조건이 만족한다면 ,
beq teq_test
라인을 실행하게 되어,
teq_test()
를 수행하게 됩니다 ^^
프로그램을 실행하여 정말 그렇게 동작하는지 확인해 보겠습니다.
3. 프로그램 실행화면
다음은 프로그램 실행 화면 입니다.
앞으로?
다음글에도 역시! ARM 명령어중 하나를 선택하여 프로그램해 보겠습니다. ^^