请教函数的出口的问题!

xwy6509 2007-05-29 10:49:27
请问用debug调试是,调用函数时,esp开始的值是不是函数的出口地址的阿?
...全文
208 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmail 2007-05-30
  • 打赏
  • 举报
回复
上面可能会把你弄糊涂。

寄存器前面都加%

AT&T格式汇编

前面是源操作数,后面是目的操作数

和intel格式不同
cmail 2007-05-30
  • 打赏
  • 举报
回复
这还不明显吗?
call src
=>
pushl eip;
movl src, eip;


src:
pushl epb
movl esp, ebp
...
...
leave ;相当于开始两句的逆操作
ret

其中:
leave
=>
movl ebp, esp
pop ebp

ret
=>
pop eip

ret就相当于pop eip,就是接着函数调用前的指令继续往后执行。
xwy6509 2007-05-30
  • 打赏
  • 举报
回复
对 阿 !!
不过 函数的 出口地址 是 存在哪的呢 ?还有函数的 压栈 的顺序是是么呢 ?
cmail 2007-05-29
  • 打赏
  • 举报
回复
函数开始一般是:
pushl ebp
movl esp, ebp
...
cmail 2007-05-29
  • 打赏
  • 举报
回复
call src
=>
pushl eip
movl src eip

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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