강좌 & 팁
안녕하세요.
오늘도 역시 니모닉 조건중 하나를 선택하여 공부해 보겠습니다^^
PL( PLus / positive or zero )
PL 의 의미는 '양수 또는 0' 이며 Nagative 플래그가 클리어(0)일 경우입니다.
이번 니모닉 조건은 간단해 보입니다.
연산 결과가 0 이거나, 양수일 경우 실행하게하는 니모닉 조건일것 같습니다.
정말 그렇게 동작하는지 프로그램 하나를 만들어 검증해 보겠습니다.
1. 프로그램
다음은 pl 니모닉 조건을 이용한 pl.c 에제 프로그램 입니다.
다음 프로그램은 연산 결과가 0 일 경우 bpl_test() 를 호출하는 프로그램입니다.
#include <stdio.h>
int asm_pl_ex ( void );
void bpl_test ( void )
{
printf("BPL TEST OK \n\n");
}
asm(" \n\
.global asm_pl_ex \n\
asm_pl_ex: \n\
mov r0, #3 \n\
mov r1, #3 \n\
cmp r0, r1 \n\
bpl bpl_test \n\
mov pc, lr \n\
");
int main ( void )
{
printf("\n+------------------+\n");
printf("|ARM Instruction PL|");
printf("\n+------------------+\n\n");
asm_pl_ex();
printf("Program END\n\n");
return 0;
}
2. 프로그램 설명
제 글을 여러번 읽어 주신 분들은 프로그램 설명을 안보고도 짐작을 하실겁니다 ^^
하지만, 제 글이 처음이신 분들을 위해 천천히 살펴 보겠습니다!
핵심 소스는
mov r0, #3
mov r1, #3
cmp r0, r1
bpl bpl_test
입니다.
cmp 명령어 기억나시죠?
기억이 안나시는 분은 클릭클릭 ^^---->>> (ARM 명령어를 배워보자!(32) - 조건부 실행(6) - mi)
자, 본론으로 들어가서 소스를 하나하나 살펴보겠습니다.
mov r0, #3
mov r1, #3
3 - 3 = ?
연산결과가 0이 나오게 됩니다 ^^
PL 니모닉 조건의 의미 기억하시죠?
PL 의 의미는 '양수 또는 0'...(생략)
그렇다면 bpl_test()가 호출이 되겠죠?
자, 정말 그런지 컴파일해서 수행해 보겠습니다.^^
3. 프로그램 실행화면
다음은 실행 화면입니다.
bpl_test()가 잘 호출 되었습니다^^
여러분들도 해보시고 양수가 되는 경우로 프로그램을 만들어서 수행해 보시면 좋을것 같습니다 ^^
앞으로?
다음글에도 니모닉 조건을 이용하여 프로그램해 보겠습니다 ^^