강좌 & 팁
안녕하세요.
정말 더운 하루가 될꺼같은 날씨입니다!!
더위 조심하세요~~^^
무슨 명령어를 배워 볼까요~?
만만한 명령어를 골라 공부해 보겠습니다!
음... 뭐가 좋을까요?
SUB 명령어가 좋겠습니다!
오늘은 SUB 명령어를 이용한 예제 프로그램를 작성하고 실행해 보겠습니다.
SUB 명령어
SUB 명령어는 ADD 명령어와 같은 산술 명령어 중 하나 입니다.
SUB은 32비트값의 뺄셈 기능을 하는 명령어 입니다.
이 명령을 이용하면 뺄셈를 할 수 있겠죠~!?
프로그램을 작성 하고 실행하여 정말 값을 뺄수 있는지 확인 해보겠습니다!
1. 프로그램
오늘도 역시 프로그램 먼저 하고 설명을 하겠습니다!
다음은 sub 명령을 이용한 sub.c 예제 프로그램 입니다.
#include <stdio.h>
int asm_sub_ex ( int x, int y );
asm(" \n\
.global asm_sub _ex \n\
asm_sub_ex: \n\
sub r0, r1 \n\
mov pc, lr \n\
");
int main ( void )
{
int sub;
printf("\n+-------------------+\n");
printf("|ARMInstruction SUB|\n");
printf("+-------------------+\n\n");
sum = asm_sub_ex( 3, 2);
printf("sub = %d\n\n", sub );
return 0;
}
결과를 예상해 보세요~^^
눈치가 빠르신 분들은 눈치 채셨을 겁니다.
제가 프로그램을 복사 붙여 넣기를 했다는 사실을요!!
역시 프로그램은 재사용성이 좋아야 겠죠~? 후후
2. 프로그램 설명
예제 프로그램에서 asm_sub_ex()함수를 호출 하여 sub 명령어를 처리하는 어셈블리 함수로 분기합니다.
어셈블리 코드에서는 3와 2을 처리해야 겠지요?
어셈블리 코드에서는 r0와 r1를 이용하여 함수의 인자값을 받습니다.
다음과 같은 코드로 표현할 수 있습니다.
r0 = 3;
r1 = 2;
r0와 r1으로 받은 값을 빼면 되겠죠!?
무슨 명령어를 이용할까요?
당근 SUB 명령어를 이용합니다! ^^
sub r0, r1
위코드는 다음과 같은 코드로 표현할 수 있습니다.
r0 = r0 - r1;
그럼 r0 레지스터에는 '-1'값이 저장되어 있을 겁니다.
정말 그런지 프로그램을 실행해 보겠습니다.
3. 프로그램 실행화면
실행 결과는 다음과 같습니다.
원하는 값이 잘 나오나요~?
여러분들도 실행해 보세요~
앞으로?
다음글에도 역시~ ARM 명령어 중 하나를 선택하여 공부해 보겠습니다.
빠른만남을 원하시면 http://ms-osek.org/ 여기로 찾아오세요~