您的位置:首页 > 其它

[学习]简单理解堆栈平衡

2014-07-10 10:37 141 查看
汇编代码来自网上 :

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: