안녕하세요.


날씨가 정말 좋은 어린이 날 입니다!!


하지만,


어린이가 아닌 관계로 오늘도 ARM 명령어를 공부해 보겠습니다^^

NOP


NOP는 ARM 명령어는 아닙니다.


NOP은 PC값을 업데이트 하는 것 외에 다른 부분에는 영향을 주지 않는 기능을 하는 어셈블리 메크로 입니다.


NOP은 ARM 상태에서


mov r0, r0로 어셈블 되며,


Thumb 상태에서는 


mov r8, r8로 어셈블 됩니다 ^^


ARM상태에서 r0를 로드한 다음 NOP를 사용한다면 파이프라인 인터록(interlock)를 야기할 수도 있습니다.


ARM 명령어는 아니지만 한번은 짚고 넘어갈 필요가 있는 메크로라 생각되었습니다 ^^

1. 프로그램


다음 프로그램은 nop 메크로를 이용하여 아무 일도 안하는 것을 확인하는 프로그램 입니다.


다음은 nop 메크로를 이용한 nop.c 예제 프로그램 입니다.


#include <stdio.h>

int asm_nop_ex( void );

asm("                    \n\
.global asm_nop_ex         \n\
asm_nop_ex:                \n\
nop          \n\
nop          \n\
nop          \n\
mov     pc, lr      \n\
");

int main ( void )
{
    printf("\n+------------------+\n");
    printf("|ARMInstruction NOP|\n");
    printf("+-------------------+\n\n");

    asm_nop_ex();

    printf("Program END\n\n");

    return 0;
}


결과를 예상해보세요~ 

2. 프로그램 설명


이번 프로그램을 특별히 설명 할 것이 없습니다 ^^


왜냐!?


NOP 메크로는 아무것도 안하는 명령어 이기 떄문입니다!


그렇죠?


궁금한 것이 있는 분들은,


댓글을 이용해 주세요~~

3. 프로그램 실행화면


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


asm_nop_ex.PNG


여러분도 실행해 보세요 ^^

앞으로?

 

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