push ebp ; 提升堆栈
mov ebp,esp
sub esp,0CCh
------------------------------------------
push ebx ; 保留现场,函数在执行的时候会用到一些寄存器,但这些寄存器中
push esi ; 值很可能会被程序用到,所以要先存储到内存中
push edi
push ecx
------------------------------------------
lea edi,[ebp-0CCh] ; 向分配的空间填充数据
mov ecx,33h
mov eax,0CCCCCCCCh
rep stos dword ptr es:[edi]
----------------------------------
pop ecx ; 函数实际实现的功能
mov dword ptr [this],ecx
mov eax,dword ptr [this]
mov dword ptr [eax+4],1
mov eax,dword ptr [nID]
push eax
push offset string "\r\nID:%d Who is your God? I am!\r\n"... (0EC6E94h)
call _printf (0E33D73h)
add esp,8
----------------------------------------
pop edi ; 恢复现场,将之前保留的寄存器的值恢复
pop esi
pop ebx
-----------------------------------------
add esp,0CCh ; 堆栈平衡
cmp ebp,esp
call __RTC_CheckEsp (0E32356h)
mov esp,ebp ; 降低堆栈
pop ebp ; 恢复栈底
ret 4 ; 函数执行完毕,返回到调用处,等同于pop eip
原文地址:https://www.cnblogs.com/17bdw/p/8451376.html
时间: 2024-11-06 12:40:28