작성
·
182
답변 1
0
안녕하세요. madlife9161님!
일반적으로, 프로그램의 데이터 영역(data segment)은 낮은 주소에서 시작하여 메모리의 상위 주소로 성장하고, 스택(stack segment)은 높은 주소에서 시작하여 낮은 주소로 성장합니다. 이를 전문 용어로 stack growth 라고 함. 이렇게 하면 두 영역이 중간에서 충돌할 가능성을 최소화하고, 필요에 따라 동적으로 확장할 수 있습니다.
초기 ARM 디자인에서 이렇게 스택을 사용하였고, 이후의 디자인에서도 이와 같은 방식을 계속 유지하고 있습니다. 하지만, 모든 CPU 아키텍처가 이와 같은 방식을 따르는 것은 아닙니다. 예를 들어, x86 아키텍처는 반대로 스택이 낮은 주소에서 높은 주소로 성장하는 "푸시 업" 방식을 사용합니다.
이 주제와 리틀엔디안, 빅엔디안과는 별개의 내용으로 보시면 됩니다.
제 강의 ARM Cortex-M 프로세서 프로그래밍에서 이 내용들을 다루고 있습니다. 참고해주세요.