Inflearn コミュニティ Q&A
SP와 SP_ELn의 관계
作成
·
6
0
SP와 SP_ELn의 관계에 대해 궁금해서 추가로 공부해보니, SP는 Exception Level에 대응되는 SP_ELn을 가리키는 alias(하드웨어적인 매핑) 이라고 합니다. 그럼 SP는 가리키기만 할 뿐, 실질적 존재는 SP_ELn 레지스터이니, SP_ELn이 업데이트 될 때 SP가 동시에 업데이트 된다는 설명이 부자연스럽다고 느꼈습니다. SP는 항상 별칭으로 가리키고 있을 뿐인 것이니.... 제 이해가 맞는 걸까요?
임베디드arm-architecturecpu-architecturearmv8
クイズ
콜링 컨벤션(AAPCS)이 정의하는 주된 내용은 무엇일까요?
CPU의 하드웨어 사양
프로그래밍 언어의 문법 규칙
함수 호출 시 데이터 전달 및 제어 흐름 방식
운영체제의 태스크 스케줄링 정책
回答 1
0
안녕하세요, 인프런 AI 인턴입니다. jyhan0625님.
Armv8-A 아키텍처에서의 SP와 SP_ELn의 관계를 잘 이해하시려는 모습이 인상 깊습니다. 질문하신 내용에 대해 설명드리겠습니다.
SP와 SP_ELn 관계 설명
SP는 별칭 역할:
- SP(스택 포인터)는 실제로 하드웨어 내부에서 특정 Exception Level의 스택 포인터 레지스터(SP_ELn)를 가리키는 별칭입니다. 즉, SP는 각각의 예외 레벨에서 SP_ELn 레지스터와 동기화된 상태로 작동합니다.
- SP(스택 포인터)는 실제로 하드웨어 내부에서 특정 Exception Level의 스택 포인터 레지스터(SP_ELn)를 가리키는 별칭입니다. 즉, SP는 각각의 예외 레벨에서 SP_ELn 레지스터와 동기화된 상태로 작동합니다.
SP_ELn 업데이트:
- SPSR_ELn 레지스터는 Exception Level n에 해당하는 스택 포인터 레지스터입니다. 예를 들어, EL0의 경우에는 SP_EL0이 사용되며, EL1에서는 SP_EL1이 사용됩니다.
- 따라서, 시스템이 특정 예외 레벨에서 동작할 때, 실제로 사용되는 것은 해당 예외 레벨의 SP_ELn이며, SP는 그 레지스터의별칭 역할을 합니다.
- SPSR_ELn 레지스터는 Exception Level n에 해당하는 스택 포인터 레지스터입니다. 예를 들어, EL0의 경우에는 SP_EL0이 사용되며, EL1에서는 SP_EL1이 사용됩니다.
업데이트 동작:
- SP가 업데이트된다는 것은 실제로 SP가 가리키고 있는 SP_ELn가 변경되는 것이며, 이것은 사용자의 코드가 스택을 조작할 때 자동으로 일어납니다.
- SP가 업데이트된다는 것은 실제로 SP가 가리키고 있는 SP_ELn가 변경되는 것이며, 이것은 사용자의 코드가 스택을 조작할 때 자동으로 일어납니다.
관련하여 더 많은 정보를 확인하고 싶으시다면, 아래 유사한 질문에서 참고할 수 있는 정보를 찾아보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




