어 셈 블 리 에서 c++에서 extern 키워드 사용

1791 단어 c + +extern 키워드
c++에서 extern 키 워드 는 변수 와 함 수 를 설명 하 는 데 사 용 됩 니 다.함 수 를 설명 할 때 extern 의 효과 가 있 는 지 없 는 지 와 같 습 니 다.즉,다음 두 문 구 는 똑 같은 효 과 를 가 집 니 다.

extern void fun();
void fun();
그러나 변수 에 대해 extern 이 있 는 지 없 는 지 는 차이 가 있 습 니 다.extern 이 있 을 때 컴 파일 러 에 이 변수 가 존재 한 다 는 것 만 알 립 니 다.컴 파일 러 는 이 변수 에 저장 공간 을 분배 하지 않 습 니 다.즉 진정한 성명 이다.extern 이 없 으 면 성명 과 동시에 컴 파일 러 도 이 변수 에 저장 공간 을 분배 합 니 다.
다음은 extern 의 상황 이 있 을 때의 c++소스 코드 입 니 다.

int main() {
    extern int i;
}
다음은 대응 하 는 외환 코드 입 니 다.

; 1    : int main() {

    push    ebp
    mov    ebp, esp;esp , ebp , main ,
                ; ( ), ebp ,

; 2    :     extern int i;
; 3    : }

    xor    eax, eax
    pop    ebp
    ret    0; ,

위의 외환 코드 를 통 해 알 수 있 듯 이 변수 i 에 역 에서 어떠한 저장 공간 도 분배 하지 않 았 습 니 다.
다음은 extern 상황 이 없 는 c++소스 코드 입 니 다.

int main() {
    int i;
}
다음은 대응 하 는 외환 코드 입 니 다.

; 1    : int main() {

    push    ebp
    mov    ebp, esp
    push    ecx; extern
               ;ecx , ecx , i
               ; ecx , , ,

; 2    :     int i;
; 3    : }

    xor    eax, eax
    mov    esp, ebp
    pop    ebp
    ret    0

에서 알 수 있 듯 이 extern 키워드 가 없 을 때 변수 i 가 스 택 에 저장 공간 을 배정 한 것 이 확실 합 니 다.
위의 어 셈 블 리 는 cl 명령 을 사용 하여 명령 행 에서 발생 합 니 다.vs 2010 으로 어 셈 블 리 인 코딩 을 만 들 면 어 셈 블 리 인 코딩 이 다 를 수 있 지만 뜻 은 같 습 니 다.

좋은 웹페이지 즐겨찾기