안녕하세요.


오늘도 ARM 명령어 하나를 선택하여 공부해 보겠습니다!

CPY 명령어


CPY 명령어는 ARM 레지스터를 다른 레지스터로 복사하는 명령어 입니다.


MOV 명령어도 이러한 기능을 했었죠?


CPY 명령과 MOV의 차이는 CPSR레지스터에 영항을 주지않고 복사를 합니다.


CPY 명령어를 이용한 프로그램은 간단하겠죠?


CPY 명령어를 이용하여 프로그램 해보겠습니다.

1. 프로그램


다음 프로그램은 CPY를 이용하여 r0 에 r1값 복사하여 출력하는 프로그램입니다.


다음은 cpy 명령어를 이용한 cpy.c 예제 프로그램 입니다.




#include <stdio.h>

int asm_cpy_ex( int x, int y  );

asm(" \n\
.global asm_cpy_ex \n\
asm_cpy_ex: \n\
cpy r0, r1  \n\
mov  pc, lr \n\
");

int main ( void )
{
   int cpy;

  printf("\n+------------------+\n");
  printf("|ARMInstruction CPY|\n");
   printf("+-------------------+\n\n");
cpy = asm_cpy_ex( 0x00000000, 0x12345678 ); printf("cpy = 0x%08X\n\n", cpy ); printf("Program END\n\n"); 
return 0; }


결과를 예상해 보세요~

2. 프로그램 설명


프로그램의 핵심코드는 다음과 같습니다.


cpy r0, r1


정말 간단합니다!


이는 다음과 같은 코드로 표현할 수 있습니다.


r0 = r1


그렇다면 값은 어떻게 될까요?


다시한번 생각해야될 점은!


CPSR( Current Program Staturs Register )에 영향을 주지 않는다는 점!


위 사항 빼고는 mov 명령와 같다고 보시면 됩니다.


3. 프로그램 실행화면


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


asm_cpy_ex.PNG


여러분들도 실행해 보세요~~

앞으로?

 

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

빠른만남을 원하시면 http://ms-osek.org/ 여기로 찾아오세요~