Re: JMP table in debug but not release?
- From: "Laurent D.A.M. MENTEN" <spamtrap@xxxxxxxxxx>
- Date: Fri, 17 Nov 2006 19:34:37 +0100
spamtrap@xxxxxxxxxx wrote:
I'm not sure if this the right group for this question but if not II think this is because debug build has less or no optimization and the
apologize.
If I build a application in debug mode function calls go to an
intermediate location in memory before being directed to the actual
code for the function. For example,
int A = MyTemp.GetInt();
004113BE lea ecx,[MyTemp]
004113C1 call Temp1::GetInt (4110AAh)
(4110AAh) is the intermediate stop
004110AA jmp Temp1::GetInt (411450h)
then 411450h is the actual code for the method
class Temp1
{
public:
int GetInt()
{
00411450 push ebp
00411451 mov ebp,esp
00411453 sub esp,0CCh
00411459 push ebx
0041145A push esi
0041145B push edi
0041145C push ecx
0041145D lea edi,[ebp-0CCh]
00411463 mov ecx,33h
00411468 mov eax,0CCCCCCCCh
0041146D rep stos dword ptr es:[edi]
0041146F pop ecx
00411470 mov dword ptr [ebp-8],ecx
return 2;
00411473 mov eax,2
}
This indirection does not take place in a release build. Does anyone
know what this collection of jmp statements is? Is this what is
referred to as a "jump table" and if so what is it's purpose?
At first I thought it was part of the IAT but these are not imported
functions.
Any help would be much appreciated.
vtable for you class is fully used. Is you function is virtual or
overloaded?
.
- References:
- JMP table in debug but not release?
- From: spamtrap
- JMP table in debug but not release?
- Prev by Date: Re: ASM Compiler?
- Next by Date: Re: ASM Compiler?
- Previous by thread: Re: JMP table in debug but not release?
- Index(es):
Relevant Pages
|
|