2013-02-14 2 views
0

함수의 스택 프레임에 대한 호출 스택과 스택을 저장하기 위해 기본적으로 두 개의 다른 메모리 위치를 지원하는 하드웨어 플랫폼이 있습니까? 첫째 - 사용자 코드를 읽고 쓰는 것이 가능합니다. 특히 기존 구조화 된 언어 (예 : C/C++) 용으로 설계된 하드웨어 플랫폼에 관심이 있지만 이국적인 것은 아닙니다.프레임의 호출 스택과 스택이 다른 위치에있는 플랫폼?

답변

0

이것은 정말 리소스가 적은 마이크로 컨트롤러의 일반적인 설정입니다.

이 구성에 대한 동기는 일반적으로 하나 또는 둘 다 다음에 추가 메모리가 갖는 반면

1) 상에 다이 SRAM 코어 속도로 실행 제한된 양 (종종 1 또는 2 KB)가 느린 액세스 시간 - 1kB는 스택에 저장된 큰 자동 변수가 아니라 리턴 주소의 일부 스레드 스택에 충분합니다. 2) 세그먼트 내 메모리 액세스 명령어가 짧은 op 코드로 인코딩되므로 RAM에서 더 빨리 가져올 수있는 세그먼트 어드레싱 모드.

이 배열은 함수 호출의 간단한 경우를 만들고 값싼 반환합니다.

실제로 많은 CPU 아키텍처 (특히 RISC 아키텍처)의 경우 컴파일러는 스택 프레임을 만들고 소비하기 위해 범용 메모리 액세스 명령어를 사용하므로 스택 프레임이 어디에 있는지와 사용 방법을 결정하는 것은 CPU 아키텍트가 아닌 컴파일러 작성자를위한 것입니다.

스택 프레임의 다른 데이터로 덮어 쓰지 못하도록 반송 주소를 보호한다는 것이이 질문에 염두에 두는 것으로 의심됩니다.

+0

무단 액세스로부터 다중 사용자 멀티 태스킹 환경을 보호 할 수 있다고 생각합니다. – Orient