ebp,esp有什么区别啊

PRuby 2002-10-05 04:37:46
pushl %ebp
movl %esp,%ebp
干嘛要这样?
...全文
1046 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
giantzz 2002-10-05
  • 打赏
  • 举报
回复
esp始终指向栈顶,ebp是在堆栈中寻址用的
itaolu 2002-10-05
  • 打赏
  • 举报
回复
楼主写的好像是要用GCC来编译的汇编?

以下摘自我的一篇文章:

push ebp ;ebp入栈
mov ebp, esp ;因为esp是堆栈指针,无法暂借使用,所以得用ebp来存取堆栈
sub esp, 4*5 ;下面的wsprintf一共使用了5个参数,每个参数占用4个字节,所以要入栈4*5个字节
push 1111
push 2222
push 3333
push offset szFormat
push offset szOut
call wsprintf ;调用wsprintf
add esp, 4*5 ;堆栈使用完毕,“还”回4*5个字节给系统
...
mov esp, ebp ;恢复esp的值
pop ebp ;ebp出栈
ret


明白了吗?主要是用来保存/恢复堆栈,以便传递参数给函数。
在MASM里面,有一条更方便的语句,就是invoke
使用它后,你就不用自己做这些事情了。




--------------------------原创文档----
请参观:老罗的缤纷天地
网 址:http://laoluoc.yeah.net
E-mail:lcother@163.net
--------------------------------------
myblind 2002-10-05
  • 打赏
  • 举报
回复
esp是堆栈指针

ebp是基址指针

那两条指令的意思是 将栈顶指向 ebp 的地址

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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