Ben voil�, tout est dans le titre. J'ai une fonction qui marche en mode debug, pas en mode release. La voil�:
En fait, lorsqu'on regarde le code assembleur g�n�r�, le compilateur fait comme si ebp et esp �taient �gaux (ce qui n'est pas le cas):
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13 if (TEST() == 0x12345678) MessageBox(NULL, "Erreur", "", MB_OK); unsigned long TEST(void) { unsigned long a; a = 0x12345678; _asm { mov a,esi } return a; }
Il semblerait donc que ce soit un probl�me de convention d'appel. Mais j'ai essay� de la d�clarer en pascal, stdcall, cdecl, etc... Rien n'y fait. Quelqu'un aurait-il une id�e ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 push esi push ecx mov [esp], 0x12345678 mov [ebp+0x00],esi mov eax,[esp] pop edx pop esi ret
Partager