2009-09-09 54 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 

如果我有 [EBP + 4]的DWORD變量,它意味着該變量 包含在範圍[EBP + 4]〜 [EBP + 8],或[ebp + 4]改爲[ebp]?下面描述的是正確的嗎?配置在存儲器推參數

[-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]

感謝

回答

1

你的理解是正確的。雖然堆棧向下增長,但內存中的多字節值將存儲在從基地增加的內存地址中。 dword變量將存儲在ebp + 4,ebp + 5,ebp + 6,ebp + 7中。 ebp + 4將是最低位的字節(因爲x86是小端)。