ARM Development Suite v1.2
Branch Instructions 상대 분기 절대 분기 하드웨어 분기 현재 PC 값을 기준으로 +/- 하여 분기 B/BL BX 하드웨어 분기 예외 발생시 하드웨어적으로 특정 번지로 절대 분기
PSR (Program Status Register)
PSR Transfer Instructions MRS, MSR PSR에 값을 써넣거나 PSR에 있는 값을 레지스터에 저장하기 위해서는 MOV나 LDR 등의 명령을 쓰지 않고 위의 명령어 사용 MRS : PSR 값을 레지스터에 저장 MRS{<cond>} Rd, <psr> MSR : 레지스터의 값을 PSR에 저장 MSR{<cond>} <psr>_<fields>, Rm
PSR Transfer Instructions usr/sys 모드에서는 spsr을 접근할 수 없으며 cpsr의 제어필드는 usr모드에서 바꿀 수 없다. 특권모드에서는 cpsr의 제어필드를 바꾸어 인터럽트 마스크 설정 및 모드를 바꿀 수 있다. 그러나 T플래그를 변화시키는 것은 금지되어 있다. Ex) 특권 모드에서 SVC 모드로 바꾸기 위한 프로그램 MRS R0, CPSR ; CPSR를 읽어 R0에 적재한다. BIC R0, R0, #0x1F ; 읽어 온 데이터에 대하여 모드 비트를 0으로 설정한다. ORR R0, R0, #0x13 ; 모드 비트의 내용을 SVC 모드 값으로 바꾼다. MSR CPSR_c, R0 ; 바꾼 값을 다시 CPSR의 제어(control) 필드에 넣는다.
SWI (Software Interrupt) 소프트웨어적으로 예외를 발생시켜 USR모드에서 특권모드인 SVC 모드로 진입하기 위하여 사용 SWI{<cond>} <Immde_24> SWI 예외 발생시 R14_svc에 SWI 명령어의 다음 주소 값이 기록 R14_svc 값을 읽어 -4 한 값이 SWI 명령어의 주소 SWI 명령어를 읽어 LSB 24-bit 추출하여 SWI 번호 획득 SWI 번호에 따라 세부 핸들러 호출 SWI를 통한 세미호스팅(Semi-hosting) 기능 구현
SWP SWP 일종의 메모리 교환 명령어 LDR/STR를 한번에 처리 SWP{<cond>}{B} <Rd>, <Rm>, [<Rn>] 운영체제에서 제공하는 semaphore를 만들기 위하여 사용되는 이유로 semaphore 명령어라고도 불림