작성
·
50
·
수정됨
0
안녕하세요! Exception Level 관련 질문이 있습니다.
질문) Exception Level을 프로그래머가 직접 설정하는 것인가요?
Exception 발생하는 경우를 예시로
H/W설계자가 결정 한 것
VBAR 레지스터에 설정된 주소 + Offset 위치로 분기하도록 설계
Exception 유발 직전 상태의 PSTATE값 백업
PSATE 값 변경 : 현재 EL0인 경우 EL1로 변경
ELR, ESR 업데이트
프로그래머가 설정하는 부분
VBAR 레지스터의 값은 프로그래머가 미리 초기화
Exception Vector 주소로 분기 한 경우, 어떻게 동작할지 코드 작성 → Exception Handler 작성
결국 프로그래머가 Exception Handler를 작성하는 것으로 이해했는데, 프로그래머가 자신이 작성하는 코드의 Exception Level을 설정할 수 있나요?
프로그래머가 작성하는 코드의 Exception Level이 어떻게 결정되는지 궁금합니다.
답변 2
0
질문 주신 내용에 대해 답신드립니다:
1. 어셈블리 명령어를 실행해서 익셉션 레벨을 변경할 수는 있습니다.
예를 들어 EL2에서 EL1, 혹은 EL1 에서 EL0으로 낮은 익셉션 레벨로 변경할 수 있습니다.
2. 어셈블리 명령어를 실행해서(예시: SVC) 더 높은 익셉션 레벨로 진입할 수는 없습니다.
3. 부팅한 다음에 확인되는 익셉션 레벨은 EL3이며, 칩셋 레벨에서 하드웨어적으로 설정됩니다.
혹시 '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)'을 수강하셨다면, 아래 섹션에서 관련 내용을 확인하실 수 있습니다:
-> 섹션 12. [보충] 6.익셉션 레벨: 부팅과정에서 설정되는 익셉션 레벨
https://inf.run/7jyaB
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
jhp2014.dev님이 질문하신 Exception Level 설정은 주로 하드웨어 및 시스템 설계 사양에 따라 이루어지며, 특정 Exception Level에서의 동작은 시스템의 전반적인 아키텍처 설계에 달려 있습니다. 프로그래머는 주로 Exception이 발생했을 때 어떻게 처리할지에 대한 핸들러를 작성하게 됩니다.
Hardware 설계에 따라 결정되는 부분:
프로그래머가 설정하는 부분:
결론적으로, 프로그래머가 직접 Exception Level을 설정하는 것은 아니지만, 각 Exception Level에서의 행위를 정의하고 준비하는 역할을 하게 됩니다. 시스템의 특정한 요구 사항이나 하드웨어의 설계에 따라 프로그래머가 작성하는 코드가 실행될 Exception Level은 자연스럽게 결정됩니다.
문의 사항에 대한 이해를 돕기 위해, 추가적인 참고 자료를 추천해 드립니다:
- Spring Boot Reference Documentation: Executable Jar Restrictions
추가로 궁금하신 점이 있으면 언제든지 질문해 주세요!