어 셈 블 리 에서 c++에서 변수 유형 에 대한 심도 있 는 분석
c++소스 코드:
int i = 2;//
int main() {
int j = i;
}
다음은 어 셈 블 리 코드 입 니 다.
PUBLIC ?i@@3HA ; i
_DATA SEGMENT
?i@@3HA DD 02H ; i
_DATA ENDS
PUBLIC _main
; Function compile flags: /Odtp
; File c:\users\administrator\desktop\c++\test\a.cpp
_TEXT SEGMENT
_j$ = -4 ; size = 4
_main PROC
; 3 : int main() {
push ebp
mov ebp, esp
push ecx; 4
; 4 : int j = i;
mov eax, DWORD PTR ?i@@3HA ; i
mov DWORD PTR _j$[ebp], eax;eax i , j
; 5 : }
xor eax, eax
mov esp, ebp;// , j
pop ebp
ret 0
_main ENDP
_TEXT ENDS
어 셈 블 리 언어 에서 볼 수 있 습 니 다.전역 변수 i 의 메모리 가 메모리 에 분 배 된 데이터 영역(DATA 지정)따라서 프로그램 이 실행 되 는 과정 에서 항상 존재 하기 때문에 프로그램의 모든 부분 에 접근 할 수 있 고 프로그램 이 끝 날 때 소각 할 수 있 습 니 다.한편,부분 변수 j 의 메모 리 는 main 함수 에서 스 택 에서 동적 으로 분 배 됩 니 다.또한 main 함수 가 끝 난 후에 이 공간 이 방출 되 기 때문에 main 함수 밖에서 부분 변수 j 에 접근 할 수 없습니다.실제로 운영 체제 에서 실행 가능 한 파일 을 불 러 올 때 데이터 영역 에 있 는 데 이 터 를 해당 하 는 메모리 에 불 러 온 다음 에 프로그램 을 실행 하기 시작 합 니 다.따라서 전역 변 수 는 파일 을 불 러 온 후에 첫 번 째 프로그램 언어 가 실행 되 기 전에 발생 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
hdu 1717 소수 화 점수 2 (수학)소수 화 점수 2 레이 는 수학 시간 에 선생님 의 말씀 을 듣 고 모든 소수 가 점수 로 표시 되 는 형식 이 라 고 말 했다. 그 는 녹 기 시 작 했 고 곧 완성 되 었 다. 그러나 그 는 또 하나의 문 제 를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.