인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

은정님의 프로필 이미지
은정

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

포인터 실습

temp 주소값 push 시 질문 있습니다.

작성

·

216

0

안녕하세요. 대략적인 진행 방식은 어느정도 이해가 된 것 같습니다. 그런데

 

지역변수(temp) 할당 시에 매개변수에(&temp)값이 들어가는 부분을 도저히 찾을 수가 없네요 ㅠㅠ

혹시 CreatePlayer가 호출되기 전 push eax 부분이 매개변수까지 동시에 지정이 된다는 뜻일까요??

 

나머지 부분은 반복 학습을 하니 이해가 가는데 임시 저장소 생성시점만 이해가 가질 않습니다 ㅠㅠ

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

&temp의 의미는 [temp라는 스택 지역 변수의 주소]입니다.
lea eax, [ebp-11ch]에서 ebp-11ch가 temp의 위치인데,
lea 명령어를 이용해서 해당 주소를 eax 레지스터에다 넣어준 후,
push를 해주는 것을 볼 수 있습니다.

은정님의 프로필 이미지
은정
질문자

주소값 push 까지는 이해가 된 것 같습니다.

그렇다면 push를 해줌으로써 temp 스택 지역과 그 위치를 가리키는 &temp가 동시에 할당되어진다고 보면 될까요? (제가 잘 이해한 게 맞을까요?)

Rookiss님의 프로필 이미지
Rookiss
지식공유자

temp 변수는 특별히 할당되는 시점이 따로 있는게 아니고,
스택 프레임이 만들어지는 시점에 보통 esp를 쫙 내리게 되는데
이 때 간접적으로 특정 위치에 사용하기로 (이번 경우엔 ebp-11ch 위치에)
컴파일러에 의해 코드가 만들어집니다.

은정님의 프로필 이미지
은정
질문자

아 완벽히 이해했습니다. 감사합니다!!!!!

은정님의 프로필 이미지
은정

작성한 질문수

질문하기