강좌 & 팁
안녕하세요.
오늘도 니모닉 조을 이용하여 공부해 보겠습니다 ^^
AL( ALways )
AL의 의미는 '무조건 실행'이며 플래그를 무시합니다.
AL의 의미를 보았을때,
AL 니모닉 조건을 이용하면 무조건 실행을 하겠죠?
어떻게 동작하는지 프로그램을 하나 만들어 실행해 보겠습니다 ^^
1. 프로그램
다음은 al 니모닉 조건을 이용한 al.c 예제 프로그램 입니다.
다음 프로그램은 r0과 r1를 비교하여 연산 결과를 무시하고 무조건 bal_test()를 호출하는 프로그램 입니다.
#include <stdio.h>
int asm_al_ex ( void );
void bal_test ( void )
{
printf("BAL TEST OK \n\n");
}
asm(" \n\
.global asm_al_ex \n\
asm_al_ex: \n\
mov r0, #2 \n\
mov r1, #3 \n\
cmp r0, r1 \n\
bal bal_test \n\
mov pc, lr \n\
");
int main ( void )
{
printf("\n+------------------+\n");
printf("|ARM Instruction AL|");
printf("\n+------------------+\n\n");
asm_al_ex();
printf("Program END\n\n");
return 0;
}
2. 프로그램 설명
프로그램을 하나하나 살펴 보겠습니다.
핵심이 되는 소스는
mov r0, #2
mov r1, #3
cmp r0, r1
bal bal_test
입니다.
AL 니모닉 조건의 핵심은
무조건 실행!
이였습니다.
그렇다면,
mov r0, #2
mov r1, #3
위 코드로 r0와 r1에 각가의 값을 넣어서
cmp r0, r1
으로 비교를 하는 것 자체가 무의미 하겠죠?
무의미 하다는 것은 무조건 실행이 되기때문에 비교 연산의 결과에 영향을 받지 않는다는 뜻입니다 ^^
다시 말해서, al 니모닉 조건을 이용하면 무조건 실행되는 코드를 만들수 있다! 겠지요?
그럼 프로그램 결과가 어떻게 나올까요?
맞습니다!!
r0와 r1의 값에 무슨 값이 들어와도,
bal_test() 함수는 실행되게 되있습니다 ^^
이번 프로그램은 실행해 보셔야 제가 거짓말 하는지 알수 있겠죠~?
모두 실행해 보세요!
3. 프로그램 실행화면
다음은 실행 화면입니다.
앞으로?
이번 글이 니모닉 조건의 마지막 이였습니다.
다음글에는 ARM명령어를 공부해 보겠습니다 ^^