Coprocessor: Co-worker , cpu 혼자 모든걸 처리할 수는 없으니
Coprocessor 명령 : 전용 register
Data를 전송하는 명령
1) Coprocessor 내부의 Register들을 장난 침.
(Coprocessor 내부 Register ↔ Coprocessor 내부 Register)
여기에 붙은 모든 것들은 Coprocessor 내부에 정의 된 녀석들
(형식)
CDP Coprocessor번호, Coprocessor 명령어, CRd, CRn
Coprocessor 명령어 : Coprocessor마다 준비된 명령어가 다름
CRd: Coprocessor 내부에 있는 Register,, Destination Register로 사용
CRn: Coprocessor 내부에 있는 Register > 인자 Register
2) Coprocessor 내부의 Register들을 ARM Register에 읽거나 반대로 써서 장난치는 경우.
(Coprocessor 내부 Register ↔ ARM Register)
Coprocessor 명령: ARM core와 Coprocessor와의 통신에 관련된 Register, PSR명령과 유사
MRC, MCR : Coprocessor의 Register들과 직접적인 Register 값 교환을 하는 명령어
M X ← Y 형식입니다.
R : Core의 일반 Register,
C: coprocessor의 Register
MRC: R←C로서 R:=Coprocessor
MCR은 C←R로서, C:=Register .
ex)
MCR 코프로세스번호, 무조건 0, 레지스터번호, Coprocessor 레지스터번호, c0, 무조건 0의 형태
MCR p15, 0, r4, c2, c0, 0
> coprocessor 15번 의 2번 register에 r4 값을 전송하라는 뜻이 됨을 상기 하시면 됨다~
3) Coprocessor내부의 Register를 Memory에 직접 읽어 들이거나 반대로 써서 장난 침.
(Coprocessor 내부 Register ↔ Memory)
LDC, STC : Coprocessor 내부 레지스터와 메모리 사이에 Load, Store 명령
preindex, postindex 방식 존재
ex)
LDC p15, c2, [r0, 0x100]
Coprocessor 15번의 register 2번 > r0+0x100이 가리키는 곳의 값을 load
일반 load와 다른점 : 앞에 Coprocessor 번호인 p15 붙음.
LDR은 Register의 R, LDC는 Coprocessor의 C.
//Coprocessor 15 : MMU, Cache에 관련된 coprocessor
'임베디드 > 임베디드 레시피' 카테고리의 다른 글
Scatter Loading 주의점, heap 및 stack (2) | 2024.12.02 |
---|---|
Reset Handler에서 main까지 (Entry Point) (0) | 2024.12.01 |
SWI 의 진실 (0) | 2024.11.26 |
vector table의 구현과 실제 (0) | 2024.11.26 |
Pipe line과 Exception 관계 그리고 ^접미사 (0) | 2024.11.21 |