Assembly 内存中推送参数的处理
如果我有一个dword变量 [ebp+4],是指变量吗 包含在范围[ebp+4]到 [ebp+8]或[ebp+4]至[ebp]?下面描述的是正确的吗 [-12,-08] [-08,-04]变量8 [-04,00]var_4 [00,+04]ebp [+04,+08] [08,+12]h立场 [+12,+16]h持续时间 [+16,+20]lpCmdLine [+20,+24]nShowCmd [+24,+28]Assembly 内存中推送参数的处理,assembly,x86,Assembly,X86,如果我有一个dword变量 [ebp+4],是指变量吗 包含在范围[ebp+4]到 [ebp+8]或[ebp+4]至[ebp]?下面描述的是正确的吗 [-12,-08] [-08,-04]变量8 [-04,00]var_4 [00,+04]ebp [+04,+08] [08,+12]h立场 [+12,+16]h持续时间 [+16,+20]lpCmdLine [+20,+24]nShowCmd [+24,+28] 谢谢你的理解是正确的。虽然堆栈向下增长,但内存中的多字节值存储在从基增加的内存地址上
谢谢你的理解是正确的。虽然堆栈向下增长,但内存中的多字节值存储在从基增加的内存地址上。dword变量将存储在ebp+4、ebp+5、ebp+6、ebp+7中。ebp+4将是最低阶字节(因为x86是小端字节)
; int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
_wWinMain@16 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