2009-09-09 6 views
0
; int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd) 
[email protected] proc near 

var_8= dword ptr -8 
var_4= dword ptr -4 
hInstance= dword ptr 8 
hPrevInstance= dword ptr 12 
lpCmdLine= dword ptr 16 
nShowCmd= dword ptr 20 

Si j'ai une variable dword sur [ebp + 4], est-ce que cela signifie la variable est contenue dans la plage [ebp + 4] pour [ebp + 8], ou [ebp + 4] à [ebp]? Ce qui est décrit ci-dessous est-il correct?Disposition des arguments Enfoncé mémoire

[-12, -08]

[-08, -04] var_8

[-04, 00] VAR_4

[00, +04] ebp

[ +04, +08]

[+08, 12] hInstance

[12, 16] hPrevInstance

[+16, +20] lpCmdLine

[+20], +24 nShowCmd

[+24, +28]

Merci

Répondre

1

Votre compréhension est correcte. Bien que la pile se développe vers le bas, les valeurs multi-octets en mémoire sont stockées à des adresses de mémoire croissante à partir de la base. La variable dword serait stockée dans ebp + 4, ebp + 5, ebp + 6, ebp + 7. ebp + 4 serait l'octet d'ordre le plus bas (puisque x86 est little-endian).

Questions connexes