[学习]简单理解堆栈平衡
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
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
相关文章推荐
- 超简单的一个重叠io模型,重在学习理解
- Silverlight学习笔记一(理解一下机制,使用一下布局,实现一个简单的用户登录)
- 【OC学习-29】单例设计模式的理解、案例和简单总结
- OC学习-单例设计模式的理解、案例和简单总结
- 2014-07-14 Java Web的学习(11)-----数据库分页&事务简单理解
- 学习计划, -VB delphi 进行简单的编程理解
- Android学习之简单理解布局的layout_gravity和gravity属性
- cocos2dx 3.2 学习篇之五(简单理解内存管理)
- java api javabean包简单理解和学习
- ios学习之autolayout自动布局的简单理解 即UIKIt dymanic的使用
- (Java2D 学习笔记系列) (一)一个简单的图像填充实例及其分析理解
- smarty学习基础篇----仿照samrty模版写一个自己的简单smarty模版 帮助自己理解smarty
- Android_Graphics学习-Canvas save() restore()的简单理解
- drools学习的一点理解,简单记录下
- Object-C学习(二):关键字self、super、static的简单理解
- 关于linux里pg command 命令的简单理解——学习笔记
- EM算法学习笔记_1(对EM算法的简单理解)
- 匈牙利算法学习 (名词理解 + 简单说明)
- 我的编程学习日志(3)--教你简单的理解数组和指针(对指针概念还模糊的看过来)
- java api javabean包简单理解和学习