push ebp ;栈帧
mov ebp,esp ;ebp成为以后访问函数参数及函数局部变量的指针
sub esp, x ;局部变量实在栈上开辟的空间 这里是4的倍数 因为每次入栈出栈都是4byte
;下面这几句眼熟吧
;一般sub esp,x之后就会执行从.data段向上一句预留的栈空间复制数据的汇编语句了
mov eax,dword ptr [.data段内存地址]
mov [ebp-x],eax
mov ecx,dword ptr [.data段内存地址]
mov [ebp-y],ecx
;上面这几句 就是c语言为什么能实现函数局部变量拥有初始值的原因了
push ebx
push esi ;如果函数里面有内联汇编 一般都会生成保护ebx,esi,edi的指令
push edi
;这里就是函数内部的那些指令了。。
pop edi
pop esi ;和上面的Push对应 用来保护ebx,esi,edi寄存器
pop ebx
mov esp,ebp
pop ebp
xor eax,eax ;或者mov eax, x
ret