inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Cấu trúc và nguyên lý của kiến trúc Arm cho phát triển phần mềm hệ thống - Phần 1 Giảng dạy trực tiếp bởi tác giả (Phiên bản 2024)

3.2.2.4 Cách cập nhật các thanh ghi CPSR và SPSR

3.2.2.4 모드 복귀 부분

143

jjjj

13 câu hỏi đã được viết

0

IRQ 모드에서 슈퍼바이저 모드로 복귀할 때의 SPSR_irq.M에 왜 다시 0x13을 넣어주는지 잘 모르겠습니다. 이미 해당 레지스터는 0x13으로 지정되어 있는데 SPSR_irq가 아니라 SPSR_svc.M에 CPSR.M을 넣고 오히려 CPSR.M을 0x13으로 변경해야하는 것이 아닌가요?

임베디드 arm-architecture microprocessors cortex-a

Câu trả lời 2

0

choewonsig4197730

작성자님이 맞는것 같습니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. jjjj님.

ARM 아키텍처에서 모드시스템으로 작동할 때, 슈퍼바이저 모드와 같은 특정 모드에 진입하거나 복귀할 때 SPSR_irq와 같은 서브모드 상태 레지스터(SPSR)의 역할이 중요합니다.

질문에 대한 핵심 이해

  1. 모드 전환과 SPSR:

    • IRQ 모드와 슈퍼바이저 모드를 전환할 때, SPSR_irq는 그 전환 전에 시스템의 상태 정보를 보존합니다.
    • SPSR_irq.M0x13을 넣는 것은 슈퍼바이저 모드 (SVC)로의 복귀를 의미하며, 이는 기본적으로 하드웨어에서 이전에 복귀할 모드 정보를 저장하는 역할을 합니다.
  2. CPSR와의 관계:

    • 예외 처리 후 원래 모드로 정상 복귀하려면, CPSR.MSPSR_irq.M의 값으로 갱신해야 합니다.
    • SPSR_irq는 명령어 실행 전에 현재의 CPSR 정보(상태)를 저장하고, 복귀 시 이를 읽어 원래의 상태로 복원합니다.

참고할 수 있는 유사한 질문:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

5장 Armv7 동작모드와 6장 Armv8 익셉션 레벨 차이

0

40

2

시스템 소프트웨어 직무 관련 질문드려요

0

71

2

책관련 질문드려요

0

70

2

4.2.1. 실습을 어떻게 진행하는것인가요?

0

62

2

3.2.1.4 실습과 관련한 질문

0

72

2

Arm Architecture 관련 공부

0

52

1

유저 모드 뱅크드 레지스터 질문입니다

0

58

2

Armv8의 Exception Level에서 질문이 있습니다.

0

156

2

5.4.3 실습에서 궁금한점이 있습니다.

0

140

2

리눅스 커널 동작 모드별 스택 포인터 초기화

0

161

2

TRACE32 사용 실습에서 RASPIAN KERNEL DEBUG

0

271

2

강의 내용 짤린건가요?

0

271

1

TRACE32 프로그램

0

341

1

[3.2.2.4] Exception 발생시 CPSR <-> SPSR의 동작 질문

0

263

1

강의 자료 관련 문의

0

262

1

강의자료

0

233

2

강의하신 강의자료

0

250

1

CMP 명령어 예제 중

0

293

1

MVN 명령어 사용이유 질문

0

354

1

MOVS 명령어 질문

0

315

2

여러 가지 질문

0

348

2

ADC, SBC 어셈블리 명령어(4.2.2.4강)

0

349

1

ARMv7 범용레지스터

0

436

1

강의록 문의사항

0

295

2