강좌 & 팁
안녕하세요.
오늘도 ARM 명령어 하나를 선택하여 공부해 보겠습니다.
MVN 명령어
예전에 MOV 명령어 기억하시죠?
MOV는 ARM 명령어중 가장 간단한 데이터 이동 명령어라 설명한 적있습니다.
기억 나시죠?
기억이 안나신다면 -->>> 클릭~ ( ARM 명령어를 배워보자!(3) - mov )
MVN 명령어도 데이터 이동 명령어라 할수 있습니다.
MVN 명령어는 32비트값의 NOT값을 레지스터로 복사 하는 기능을 하는 명령어 입니다.
역시 말보다는 한줄의 코드가 와 닿겠죠?
프로그램 하여 어떤 기능을 하는 명령어이지 확실하게 알아보겠습니다.
1. 프로그램
다음은 프로그램은 mvn 명령어를 이용해 리턴되는 값을 출력하는 프로그램입니다.
다음은 mvn 명령어를 이용한 mvn.c 예제 프로그램 입니다.
#include <stdio.h>
int asm_mvn_ex( void );
asm(" \n\
.global asm_mvn_ex \n\
asm_mvn_ex: \n\
mvn r0, #0xFFFFFFFF \n\
mov pc, lr \n\
");
int main ( void )
{
int mvn;
printf("\n+------------------+\n");
printf("|ARMInstruction MVN|\n");
printf("+-------------------+\n\n");
mvn = asm_mvn_ex();
printf("mvn = 0x%08X\n\n", mvn );
printf("Program END\n\n");
return 0;
}
결과를 예상해 보세요~
2. 프로그램 설명
프로그램은 간단합니다!
mvn 명령어는 비트를 반전(NOT)하여 레지스터에 이동하는 기능을 했던 것입니다.
예를들어
mvn r0, 0x00000000
요렇게 하면
r0 = 0xFFFFFFFF
이렇게 되겠죠!?
그럼 mvn.c 프로그램은 어떤 값을 출력 하게될까요?
프로그램해서 검증해 보세요!!
3. 프로그램 실행화면
다음은 프로그램 실행 화면 입니다.
여러분도 같은 결과가 나오나요?
앞으로?
다음 글에도 역시 ARM 명령어중 하나를 선택하여 프로그램해 보겠습니다.
빠른만남을 원하시면 http://ms-osek.org/ 여기로 찾아오세요~