강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của onewhdwls130782
onewhdwls130782

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

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 모드 복귀 부분

Viết

·

137

·

Đã chỉnh sửa

0

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

임베디드arm-architecturemicroprocessorscortex-a

Câu trả lời 2

0

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

0

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

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

질문에 대한 핵심 이해

  1. 모드 전환과 SPSR:

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

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

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

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

Hình ảnh hồ sơ của onewhdwls130782
onewhdwls130782

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

Đặt câu hỏi