2009-09-10 3 views
-2

gcc에서 전처리 또는 편집 단계 중입니까? 다른 컴파일러에서 다른가요?바이너리 작성 단계에서 활성화 레코드가 정의되어 있습니까?

+0

전처리 중에 스택 프레임을 어떻게 만들 수 있습니까? 전처리는 매크로 확장 만하고 전 처리기 출력은 소스 텍스트입니다. 당신은 당신이 무엇에 대해 물어 보는지 정말로 모르는 것 같습니다. – qrdl

+0

당신은 왜 undestand하지 않습니까? C++에는 행위 기록이라는 개념이 있습니다 - 여기 http://en.wikipedia.org/wiki/Activation_record#Structure-를 읽고 GCC 컴파일러에 의해 생성되는 것을 발견하고 싶습니다. – vehomzzz

+0

@enigma 침착하게 내 의견을 읽으십시오. 정품 인증 레코드 (일명 호출 스택 프레임) 또는 전처리가 무엇인지 이해하지 못합니다. – qrdl

답변

3

런타임시 스택 프레임은 프로세서의 스택 레지스터 (Intel x86의 경우 esp)를 수정하여 만들어집니다.

컴파일러는 각 함수 호출시 스택에 공간을 예약하기위한 특정 명령어 만 덤프합니다. 이 공간은 함수가 종료 될 때 복구됩니다.

+0

일부 언어를 제외하고 런타임에 활성화 레코드를 인스턴스화하는 데 스택을 사용하지 않으며 일부 컴파일러는 변환 중에 작성된 활성화 레코드의 내용을 나타내는 데이터 구조를 가지고 있으며 생성 된 레코드에서 코드가 생성됩니다. –

+0

그리고 일부 프로세서 (특히 SPARC)는 활성화 레코드에 슬라이딩 레지스터 창을 사용합니다. 어떻게 수행 할 수 있는지에 대한 간단한 설명은 모든 복잡한 실제 최적화를 생략한다는 것을 이해하는 것이 중요합니다. – MSalters