해결된 질문
23.03.29 07:17 작성
·
368
1
강사님. 강의 잘 보고 있습니다.
r7 레지스터가 강의 초반부에 스택 포인터와 관련된 레지스터라고 말씀해주셨던 것 같은데 왜 필요한지 잘 이해가 가지 않습니다.
익셉션 호출시 하드웨어에서 자동으로 sp를 포함한 8개의 레지스터를 저장한다고 강의에서 설명해주셨는데, 왜 따로 r7에 스택 포인터를 저장하고 필요시 저장까지 하는지 이해가 필요할 것 같습니다.
답변 1
0
2023. 03. 29. 21:19
안녕하세요. 김상현님!
R7 레지스터는 Cortex-M 프로세서에서 기본적으로 프레임 포인터(Frame Pointer) 역할을 합니다. 프레임 포인터는 함수 호출 스택 프레임을 관리하는 데 사용되며, 스택 프레임의 기준 주소를 저장합니다. 이를 통해 함수 호출이 발생할 때마다 스택 메모리에 할당된 영역을 관리하고, 로컬 변수와 매개변수의 주소를 추적할 수 있습니다.
그러나 레지스터의 역할은 컴파일러나 개발자의 선택에 따라 달라질 수 있습니다. 특정 경우에는 R7 레지스터를 다른 목적으로 사용하거나 프레임 포인터를 사용하지 않을 수도 있습니다. 이는 최적화 또는 특정 애플리케이션의 요구 사항에 따라 결정됩니다