ARM 아키텍처에서는 소프트웨어 인터럽트를 수행하는 데 사용되는 SWI
(Software Interrupt) 명령어를 제공한다. 소프트웨어 인터럽트는 주로 운영체제와의 상호작용에 사용된다. 이 글에서는 SWI
명령어에 대해 알아본다.
Software interrupt instruction
- 소프트웨어 인터럽트 명령은 Supervisor 모드로 진입할 때 사용된다.
- 이 명령어는 소프트웨어 인터럽트 트랩을 발생시켜 모드 변경에 영향을 준다.
- 그런 다음 PC는 고정 값(0x08)으로 강제 설정되고 CPSR은 SPSR_svc에 저장된다.
Syntax
SWI{cond} <expression>
{cond}
: 조건부 명령시 조건 표기<expression>
예외 발생시 처리하는 과정이 이루어지고 exception vector table 에서 SWI 위치로 jump 하게 된다. 보통 kernel에서 system call을 할 때 사용된다.
Examples
SWI ReadC ; Get next character from read stream.
SWI WriteI+”k” ; Output a “k” to the write stream.
SWINE 0 ; Conditionally call supervisor
; with 0 in comment field.