일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- llm을 활용 단어장 앱 개발일지
- Got
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- 백준
- study book
- Widget
- system hacking
- MDP
- DART
- 영상처리
- ARM
- Algorithm
- BAEKJOON
- PCA
- Kaggle
- Image Processing
- ML
- Flutter
- rao
- FastAPI
- Stream
- BFS
- MATLAB
- Dreamhack
- bloc
- fastapi를 사용한 파이썬 웹 개발
- BOF
- C++
- pytorch
- Computer Architecture
- Today
- Total
Bull
[ARM] 프로세서 모드와 레지스터 | study book 본문
프로세서 모드와 레지스터
ARM 프로세서는 6개의 특권 모드와 1개의 일반 모드를 가지고 있다.
User 모드
일반 유저 애플리케이션을 수행할 때 동작 모드
System 모드
User 모드와 동일한 레지스터를 사용하지만 CPSR을 완전히 읽고 쓸 수 있음
FIQ(Fast Interrupt Request) 모드
빠른 인터럽트 처리를 위한 프로세서 동작 모드
IRQ(Interrupt Request) 모드
일반적으로 사용되는 인터럽트를 처리하기 위한 프로세서 동작 모드
SVC(Supervisor) 모드
일반적으로 운영체제 커널이 동작하는 모드, 리셋이나 소프트웨어 인터럽트가 발생할 경우 프로세서 동작 모드
Abort 모드
메모리 접근 실패 경우의 동작 모드
Undefined 모드
포르세서가 정의되지 않는 명령을 수행할 때 수행되는 모드
레지스터
전체 37개의 레지스터, 18개까지 활성화되며, 16개의 데이터 레지스터와 2개의 상태 레지스터로 구성.
데이터 레지스터 중 r13, r14, r15는 특수한 기능으로 이루어짐.
r13
: SP(stack pointer)로 사용.r14
: LR(Link Register)로 사용. 서브루틴 호출 시 복귀 주소 저장.r15
; PC(Program Counter)로 사용. 다음 명령어 주소를 저장.
모드별 레지스터
회색 부분은 Banked Register, 숨겨진 레지스터가 활성화된 부분이다.
CPSR(Current Program Status Register)
CPSR은 프로그램이 수행될 때의 상태를 나타내고 비트를 통해 상태를 설명한다.
SPSR(Save Program Status Register)는 System 모드 제외한 특권 모드로 들어갈 때 CPSR을 저장하기 위한 레지스터다. 구조는 CPSR과 같다.
CPSR은 각 8비트씩 플래그, 상태, 확장, 제어 부분으로 구성되고 Reserved 필드는 미래에 사용을 위해 비워놓은 부분이다.
N
: Negative result from ALU
Z
: Zero result form ALU
C
: ALU operation caused Carry
V
: ALU operation oVerflowed
I
: 1:disables IRQ
F
: 1:disables FIQ
T
: 1:Thumb, 0:ARM
M
: Mode Bits
+++++10000
: User11111
: System10001
: FIQ10010
: IRQ10011
: Supervisor10000
: Abort10000
: Undefined
+++++
참고자료
https://www.yes24.com/Product/Goods/90454254
[전자책]코드로 알아보는 ARM 리눅스 커널 - 예스24
2년간의 코드 분석, 1년간의 집필로 집대성한 최초의 ARM 리눅스 커널 분석서!리눅스 커널 코드 분석의 혁명적인 방법을 제공한다!리눅스 커널 코드 분석을 위한 가장 실용적인 지침서!이 책은 저
www.yes24.com
'Computer Science > ARM' 카테고리의 다른 글
[ARM::kernel] 어셈블리에서 레이블을 왜 자주 사용하는 걸까? (C에서는 피하라고 배웠었다) (3) | 2024.09.01 |
---|---|
[ARM] 프로세서 명명법 | study book (3) | 2024.08.28 |
[ARM] test_and_set_bit() : 커널 크래시 덤프 분석 (0) | 2024.08.19 |