1. LDR (Load Register): 메모리에서 데이터를 레지스터로 로드하는 명령어입니다. 예를 들어, LDR R0, [R1]은 R1 레지스터에 저장된 주소에서 데이터를 읽어서 R0 레지스터에 저장합니다.
2. B (Branch): 프로그램의 실행 흐름을 변경하는 명령어입니다. 주로 조건부 또는 무조건적인 점프를 수행하기 위해 사용됩니다. 예를 들어, B label은 주어진 레이블 위치로 실행 흐름을 점프시킵니다.
>> [ B . ] 명령어는 현재 위치로 실행 흐름을 변경하는 코드로 무한루프를 발생시키고자 할 때 사용한다.
3. MRS (Move Register to System register): 시스템 레지스터(예: CPSR)의 값을 일반 레지스터로 이동시키는 명령어입니다. 이를 통해 프로그램은 시스템 레지스터의 상태를 읽을 수 있습니다. 예를 들어, MRS R0, CPSR은 현재 프로그램 상태 레지스터(CPSR)의 값을 R0 레지스터로 복사합니다.
4. BIC (Bit Clear): 레지스터의 특정 비트를 클리어(0으로 설정)하는 논리 연산 명령어입니다. 예를 들어, BIC R0, R1, #0xFF는 R1의 값에서 하위 8비트를 클리어하고 그 결과를 R0에 저장합니다.
5. ORR (Logical OR): 두 레지스터의 값을 논리 OR 연산한 후 그 결과를 다른 레지스터에 저장하는 명령어입니다. 예를 들어, ORR R0, R1, R2는 R1과 R2의 값을 OR 연산한 후 결과를 R0에 저장합니다.
6. MSR (Move to System register): 일반 레지스터의 값을 시스템 레지스터로 이동시키는 명령어입니다. 이 명령어는 시스템 레지스터(예: CPSR)의 값을 설정할 때 사용됩니다. 예를 들어, MSR CPSR_c, R0은 R0 레지스터의 값을 조건 필드에 해당하는 CPSR의 부분으로 복사합니다.
7. BL (Branch with Link): 서브루틴 호출을 위해 사용되는 명령어입니다. 실행 흐름을 주어진 주소로 점프시키고, 반환 주소를 LR(Link Register)에 저장합니다. 이를 통해 서브루틴 실행 후 원래 코드로 돌아올 수 있습니다. 예를 들어, BL function은 function이라는 레이블의 함수나 서브루틴을 호출하고 실행이 완료된 후 원래 위치로 돌아올 수 있도록 합니다.
'Study > 임베디드OS (RTOS)' 카테고리의 다른 글
Makefile - multiple definition of 'main' 오류 원인 (0) | 2024.04.02 |
---|