[学习]简单理解堆栈平衡
汇编代码来自网上 :
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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
