bonjour
je suis en train de regarder le code généré par gcc et visual studio (pour voir les différences)
n'étant pas expert en assembleur (je ne suis pas dev asm), j'ai quelques questions sur les registres edi et esi
exemple 1 (avec edi) :
extrait du code c
extrait du code assembleur correspondant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { switch(Message) { ...
mov [ebp-4], edi <= d'où vient ce edi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 push ebp mov ebp, esp sub esp, 0A8h mov [ebp-4], edi mov edx, [ebp+C] mov edi, [ebp+8] mov [ebp-C], ebx cmp ...
mov [ebp-C], ebx <= d'où vient ce ebx ? il n'est pas alimenté à ce stade ?
exemple 2 (avec esi) :
extrait du code c
extrait du code assembleur correspondant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int WINAPI MyWinMain() { STARTUPINFO si; GetStartupInfo(&si);
push esi <= d'où vient ce esi ? (d'après le code, on dirait que c'est ma variable STARTUPINFO)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 mov ebp, esp push esi lea esi, [ebp-A8h] push ebx sub esp, 0D0h mov [esp], esi call GetStartupInfoA
push ebx <= ebx n'est pas alimenté à ce stade ? ça sert à quoi ici ?
merci
Partager