汇编代码来自网上 :
ESP 为 NN
push p2 ESP=NN-4
push p1 ESP=NN-8
call test ESP=NN-0C
;//进入函数内
{
push ebp ESP=NN-10
mov ebp, esp EBP 指向 栈顶 EBP==当前ESP
mov eax, dword ptr [ebp+0ch] eax = 参数2
mov ebx, dword ptr [ebp+08h] ebx = 参数1
sub esp, 8 ESP == NN-18
...
add esp, 8 ESP== NN-10
pop ebp ESP==NN - C
ret 8 ESP==NN + 4 +8
}
ESP = NN
结论(可能有误,欢迎指正) : 栈是可以执行的 , 执行玩需要保证堆栈平衡 ! ESP总是指向栈顶的. EBP通常是函数里的ESP某时的指针偏移
-push
-push
-push
call { call head .... ret n}
+pop
+pop
+pop