inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

신입 개발자를 위한 Armv8-A Architecture Overview (저자 직강)

AAPCS 관련 레지스터

SP와 SP_ELn의 관계

85

jyhan0625

작성한 질문수 1

0

SP와 SP_ELn의 관계에 대해 궁금해서 추가로 공부해보니, SP는 Exception Level에 대응되는 SP_ELn을 가리키는 alias(하드웨어적인 매핑) 이라고 합니다. 그럼 SP는 가리키기만 할 뿐, 실질적 존재는 SP_ELn 레지스터이니, SP_ELn이 업데이트 될 때 SP가 동시에 업데이트 된다는 설명이 부자연스럽다고 느꼈습니다. SP는 항상 별칭으로 가리키고 있을 뿐인 것이니.... 제 이해가 맞는 걸까요?

임베디드 arm-architecture cpu-architecture armv8

답변 2

1

김동현 (Austin Kim)

(늦게 답변을 드려서 죄송합니다.)

제가 진행한 이번 강의는 너무 Arm 아키텍처 관점으로만 SPn와 SP를 설명드린 것 같습니다.

일반적으로 EL0이나 EL1, EL2 그리고 EL3에서는 소프트웨어 관점으로 바라보는 스택은 SP 레지스터로만 관리됩니다. 함수를 C 언어로 프로그램한 다음에 해당 코드를 어셈블리 명령어로 분석하면 SP 레지스터만 보일 뿐입니다.

예를 들어, 아래 코드를 보겠습니다.

NUX:FFFFFFC010B05F90|__smccc_workaround.:hint #0x10 ; #16

NUX:FFFFFFC010B05F94| sub sp,sp,#0x20 ; sp,sp,#32

'sub sp,sp,#0x20' 명령어는 실행되는 위 코드가 실행되는 익셉션 레벨에 따라

아래 레지스터가 함께 업데이트 됩니다

- EL0: sp, sp_el0

- EL1: sp, sp_el1

- EL2: sp, sp_el2

- EL3: sp, sp_el3

감사합니다.

0

인프런 AI 인턴

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

Armv8-A 아키텍처에서의 SP와 SP_ELn의 관계를 잘 이해하시려는 모습이 인상 깊습니다. 질문하신 내용에 대해 설명드리겠습니다.

SP와 SP_ELn 관계 설명

  1. SP는 별칭 역할:

    • SP(스택 포인터)는 실제로 하드웨어 내부에서 특정 Exception Level의 스택 포인터 레지스터(SP_ELn)를 가리키는 별칭입니다. 즉, SP는 각각의 예외 레벨에서 SP_ELn 레지스터와 동기화된 상태로 작동합니다.
  2. SP_ELn 업데이트:

    • SPSR_ELn 레지스터는 Exception Level n에 해당하는 스택 포인터 레지스터입니다. 예를 들어, EL0의 경우에는 SP_EL0이 사용되며, EL1에서는 SP_EL1이 사용됩니다.
    • 따라서, 시스템이 특정 예외 레벨에서 동작할 때, 실제로 사용되는 것은 해당 예외 레벨의 SP_ELn이며, SP는 그 레지스터의별칭 역할을 합니다.
  3. 업데이트 동작:

    • SP가 업데이트된다는 것은 실제로 SP가 가리키고 있는 SP_ELn가 변경되는 것이며, 이것은 사용자의 코드가 스택을 조작할 때 자동으로 일어납니다.

관련하여 더 많은 정보를 확인하고 싶으시다면, 아래 유사한 질문에서 참고할 수 있는 정보를 찾아보실 수 있습니다:

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

P6KE47CA 이 부품에 대해서 궁금합니다.

0

10

0

교육용 보드 쓰로틀 질문입니다.

0

22

3

14강 PCB 배선 및 검사 파트 질문

0

14

1

PCB보드 주문 비용

0

19

1

8강 회로도 설명 2 강의 부분 질문

0

29

1

모스펫 기생 커패시터에 대한 내용 누락

0

33

1

강의 자료 어디 있을까요?

0

37

2

STM32 보드 연결 방법 없이 바로 코딩으로 넘어가서 당황스러운데

0

37

3

모터와 모터 드리이브 쪽 영상이 이상해요

0

37

2

납땜 질문

1

48

1

Chapter 16 FSM 관련 질문

1

41

2

강의 시작전 준비물 리스트 질문

0

50

2

디버깅이 잘연결되다가 연결이 끊어졌어요

0

41

2

디버깅 오류

0

53

2

강의 환경(linux) 관련 질문

1

46

2

대역폭 강의 없어요.

0

40

2

화면에 안 나오는게 있어요

0

34

1

섹션 3,4. 6,7강의듣고 섹션5나중에 들어도 괜찮은건가요?

0

39

2

아직 stm32F767 보드 없는데.. 펌웨어...

0

43

2

VDDA VSSA 연결 질문드립니다

1

36

2

ST Link 유무에 따른 main 프로그램 시작 유무

0

31

2

강의자료 요청

0

22

1

BOM 이 혹시 제공되나요?

0

46

2

36V 배터리가 아닌 24V 전원

0

46

2