• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

제꺼는 return ret 뒤에 조금 다르게 나옵니다

23.09.26 02:33 작성 23.09.26 02:47 수정 조회수 244

0

(포인터 실습. 14분 38초)

 비주얼 스튜디오 2022, x86에서 디스어셈블리 확인했습니다

 

 

ret.hp = 100;

000A245E 8B 45 08 mov eax,dword ptr [ret]

000A2461 C7 00 64 00 00 00 mov dword ptr [eax],64h

 

ret.attack = 10;

000A2467 8B 45 08 mov eax,dword ptr [ret]

000A246A C7 40 04 0A 00 00 00 mov dword ptr [eax+4],0Ah

 

ret.defence = 2;

000A2471 8B 45 08 mov eax,dword ptr [ret]

000A2474 C7 40 08 02 00 00 00 mov dword ptr [eax+8],2

 

return ret;

000A247B 8B 45 08 mov eax,dword ptr [ret]

}
000A247E 52 push edx

000A247F 8B CD mov ecx,ebp

000A2481 50 push eax

000A2482 8D 15 A4 24 0A 00 lea edx,ds:[0A24A4h]

000A2488 E8 A3 ED FF FF call @_RTC_CheckStackVars@8 (0A1230h)

000A248D 58 pop eax

000A248E 5A pop edx

000A248F 5F pop edi

000A2490 5E pop esi

000A2491 5B pop ebx

000A2492 81 C4 D4 00 00 00 add esp,0D4h

000A2498 3B EC cmp ebp,esp

000A249A E8 F5 ED FF FF call __RTC_CheckEsp (0A1294h)

000A249F 8B E5 mov esp,ebp

000A24A1 5D pop ebp

000A24A2 C3 ret

 

return ret;

000A247B 8B 45 08 mov eax,dword ptr [ret]

ret 뒤에 이렇게 한줄 나오고 없어요

어떻게 해석해야할까요??

답변 1

답변을 작성해보세요.

1

컴파일러 버전마다 결과가 다른 것이 정상입니다.
RETURN 값을 EAX 레지스터에 넣어서 반환하는 것은 보통 동일하겠죠.