ARM의 동작 모드

MySprtlty·2023년 1월 9일
0

ARM Assembly

목록 보기
7/10
post-thumbnail

🏷️ARM의 동작 모드

📌USR (User mode)

  • 일반적으로 사용하는 모드
  • ARM모드Thumb모드로 동작한다.
  • 운영체제를 사용한다면 사용자 프로세스는 이 모드에서 동작한다.

1. ARM 모드 명령어

  • 32비트 명령어 집합이다.
  • Thumb 모드에 비해 속도가 빠르다.

2. Thumb 모드 명령어

  • 16비트 명령어 집합이다.
  • ARM 모드에 비해 바이너리 크기가 작다.
  • ARM은 ARM 모드와 Thumb 모드를 하나의 펌웨어에서 섞어 쓰는 것을 허용한다.

📌SYS (System mode)

  • 사용자 프로세스가 임시로 커널 모드를 획득해야 하는 경우가 있을때 사용한다.
  • 또는 사용자 모드와 커널 모드를 구분하는 운영체제가 아닌 운영체제라면 SYS 모드가 기본 동작 모드인 경우가 많다.
  • 소프트웨어로 모드 전환을 해서 진입할 수 있다.

📌FIQ (Fast Interrupt mode)

  • FIQ 익셉션이 발생하면 이 모드로 전환된다.
  • FIQ 모드는 ARM 상태일 때만 동작한다.
  • 빠른 처리를 위해 별도의 레지스터를 몇개 더 갖고 있는데, 이를 뱅크드 레지스터라고 한다.

📌IRQ (Interrupt mode)

  • IRQ 익셉션이 발생하면, 이 모드로 전환된다.
  • ARM 상태일 때와 Thumb 상태일 때 모두 동작 가능하다.

📌SVC (Supervisor mode)

  • 운영체제에서 시스템 코드를 수행하기 위한 보호 모드다.
  • 보통 system call을 호출하면 SVC 익셉션을 발생시켜 이 모드로 전환한 다음, 커널 동작을 수행한다.
  • SVC 익셉션은 메모리나 하드웨어와 상관없이 순수하게 소프트웨어에 의해서만 발생하는 익셉션이다. (system call 같은)

📌ABT (Abort mode)

  • Data Abort나 Prefetch Abort가 발생 했을 때, 전환되는 모드다.
    • Data Abort: 메모리에서 데이터를 읽을 때 발생하는 Abort
    • Prefetch Abort: 메모리에서 명령어를 읽을 때 발생하는 Abort

📌UND (Undefined Mode)

  • Undefined Instruction이 발생했을 때, 전환되는 모드다.

0개의 댓글