能力值:
( LV9,RANK:450 )
|
-
-
2 楼
add esp, 4这条指令是为了平衡站(函数自己清理),因为前面是sub esp, 4 。
|
能力值:
( LV9,RANK:450 )
|
-
-
3 楼
请仔细阅读下调用约定就知道原因了,基础还是很重要的。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
jishuzhain
add esp, 4这条指令是为了平衡站(函数自己清理),因为前面是sub esp, 4 。
可是add esp,4 的上一条指令mov esp,ebp已将栈恢复到了分配局部变量之前的状态了
|
能力值:
( LV12,RANK:404 )
|
-
-
5 楼
add esp, 4 和pop ebp 都会使esp+4 从而清除开辟的局部变量(然后esp指向call保留的返回地址),后者捎带还原了ebp。 mov esp,ebp是将栈恢复到了push ebp后的状态,此时esp指向的是保存的ebp。画个图就很清楚了。cdecl不清理参数
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
堂前燕
add esp, 4 和pop ebp 都会使esp+4 从而清除开辟的局部变量(然后esp指向call保留的返回地址),后者捎带还原了ebp。
mov esp,ebp是将栈恢复到了push ebp ...
谢谢,请楚了! 还有个问题,C规范下函数参数的传递按照从右到左顺序入栈,那这里主程序不该先 push y吗 ?
最后于 2019-10-6 18:08
被wx_P&L编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
我没搞懂 最后的堆栈ebp地址要比esp低啊
|
能力值:
( LV3,RANK:30 )
|
-
-
8 楼
传一张我之前的学习笔记图片,应该能很清楚的表达这个问题!
最后于 2020-11-19 17:15
被haogl编辑
,原因:
|
能力值:
( LV12,RANK:380 )
|
-
-
9 楼
haogl
传一张我以前的学习笔记图片,应该能很清楚的表达这个问题!
一看就是师从海哥
|
能力值:
( LV3,RANK:30 )
|
-
-
10 楼
是滴是滴,以前学的那些教程坑了我,完全不懂原理,学了海哥的教程,终于能看懂原理了。
|
能力值:
( LV3,RANK:30 )
|
-
-
11 楼
再分享两张,好教程让我很想往下学,所以做了详细的笔记,为了能随时温故知识!
最后于 2020-11-19 17:21
被haogl编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
haogl
是滴是滴,以前学的那些教程坑了我,完全不懂原理,学了海哥的教程,终于能看懂原理了。[em_67]
冒昧问一下是啥教程,有什么关键词我好搜索一下吗
|
能力值:
( LV3,RANK:30 )
|
-
-
13 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
了解下调用约定和函数栈桢这么个东西就知道了。
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
|
|
|