해결된 질문
작성
·
156
0
EnterLobby에서
lea eax, [monster] 이렇게 eax에 monster의 주소를 넣어 줬잖아요.
근데 CraeteMonster에서
mov eax, dword ptr [info] 이렇게 eax에 또 넣어 주잖아요.
C++에서는 &monster가
CreateMonster(StatInfo* info)의 매개 변수로 들어가는 거니까 사실 Monster의 주소가 info인건데
eax에 &monster도 넣어주고 &info 넣어주고 그러면 먼저 넣어준 &monster는 없어지는 거 아닌가요? 그냥 data가 겹쳐지는 건가요?
답변 1
1
겹쳐지진 않고, 당연히 이전에 있던 데이터는 날아갑니다.
eax는 영구적인게 아니라 임시 변수라고 생각하시면 됩니다.
원하는 숫자를 넣어주고 연산이 끝나면,
다른 숫자를 넣어주고 다음 연산을 하고.. 이런 식인거죠
eax를 계속 쓰는게 아니라 monster의 주소를 eax에 넣어주고 그 eax를 push 해줬으니까 eax의 역할이 끝난 것이고,
CreateMonster를 call 하고 나서 eax에 넣어주는 info는 push 해 줬던 moster의 주소 값을 받은 값이고 그걸 다시 쓰려고 eax에 넣어준 것이겠군요.
감사합니다 :)