안녕하세요.


오늘도 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. 프로그램 실행화면


다음은 프로그램 실행 화면 입니다.


asm_teq_ex.PNG

여러분도 실행해 보세요 ^^

앞으로?

 

다음글에도 역시! ARM 명령어중 하나를 선택하여 프로그램해 보겠습니다. ^^