关于lea与push的区别

纹枰老妖 2015-11-06 03:57:34
看这样的汇编代码:
【lea ecx [ebp-8]】

【mov ecx [ebp-8]
push ecx】
,这两种形式大多情况下都是调用函数之前的入栈准备吧?它们有什么区别呢?
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 wenpinglaoyao 的回复:
[quote=引用 1 楼 akirya 的回复:] lea ecx [ebp-8] 取 [ebp-8]的地址到 ecx mov ecx [ebp-8] push ecx 是将[ebp-8]的值到 ecx,再压栈 就是int* p,int 作为参数的区别
那第一个 lea ecx [ebp-8] 中,那个ebp-8的数值有没有入栈呢?[/quote] 没有,只是获取地址而已。
  • 打赏
  • 举报
回复
lea ecx, [ebp-8]就是ecx=ebp-8 mov ecx, [ebp-8] push ecx 约等于push dword ptr [ebp-8] 两者根本不是一回事,前者根本没有压栈。
纹枰老妖 2015-11-06
  • 打赏
  • 举报
回复
引用 1 楼 akirya 的回复:
lea ecx [ebp-8]
取 [ebp-8]的地址到 ecx

mov ecx [ebp-8]
push ecx
是将[ebp-8]的值到 ecx,再压栈
就是int* p,int 作为参数的区别


那第一个 lea ecx [ebp-8] 中,那个ebp-8的数值有没有入栈呢?
  • 打赏
  • 举报
回复
lea ecx [ebp-8] 取 [ebp-8]的地址到 ecx mov ecx [ebp-8] push ecx 是将[ebp-8]的值到 ecx,再压栈 就是int* p,int 作为参数的区别

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧