2011-07-28 5 views
0

스택 방향 (메모리 주소를 낮추려면 메모리 주소를 낮추거나 메모리 주소를 낮게 설정)은 컴퓨터 아키텍처에 따라 달라집니다. 예 Intel : 높은 메모리 주소에서 낮은 메모리 주소로 SPARC : 낮은 메모리 주소에서 높은 메모리 주소로더 낮은 메모리 주소로 스택 메모리 주소가 더 높은 주소

코드를 사용하여 스택 메모리 할당 방향을 변경할 수있는 방법이 있습니까?

감사합니다.

답변

0

일반적으로 스택 관리는 컴파일러에서 수행합니다 (여기서는 C 또는 C++과 같은 것을 말합니다). 그러나 ISA는 x86에 대한 지침 인 pushpop과 같은 도움을 제공 할 수 있습니다.

컴파일러에서 이식성이없는 언어 확장 또는 명령 줄 옵션을 제공하지 않는 한 C 또는 C++에서이 방법을 사용할 수 없습니다 (변경 이유는 알 수 없습니다. 귀하의 프로그램/라이브러리는 다른 모든 프로그램/라이브러리와 호환되지 않습니다!)

+0

나는 동일을 찾고 있었다. C 코드를 통해 변경. 그리고 함수 인자, 지역 변수를 위해 생성 된 스택을 가리키고 있습니다. – NoName

+0

@NoName : 네, 그것은 제가 언급하고있는 스택입니다. –

0

스택은 기계 명령 수준에서 사용됩니다. 코드로 처리 장치 동작을 변경할 수 없습니다. 유일한 방법은 프로그램 에뮬레이션 수준을 만드는 것입니다.

0

일부 프로세서에는 사물을 스택으로 밀어 넣고 다양한 상황에서이를 팝하는 명시 적 회로가 포함되어 있습니다. 다른 프로세서는 '큰'스택을위한 그러한 회로를 포함하지 않지만 리턴 주소와 같은 것들을 저장하는 데 사용되는 제한된 수의 하드웨어 레지스터 또는 회로를 제공하며, 소프트웨어가 이들에 저장된 주소를 복사 할 수있는 수단 일 수도 있습니다 레지스터 또는 회로를 메모리의 다른 부분에 연결합니다.

하드웨어가 메모리의 스택을 명시 적으로 조작하지 않는 프로세서에서는 프로세서가 실행할 모든 코드를 제어 할 수있는 경우 원하는 패턴을 사용할 수 있습니다. 그러나 일반적으로 스택을 구현하기 위해 프로세서 제조업체에서 권장하는 패턴이있을 것이며 컴파일러 또는 다른 사람들이 생성 한 코드는 그러한 방식으로 구현 된 스택을 사용할 것으로 예상됩니다.

관련 문제