ret 指令后面跟一个数字是什么意思?

papaofdoudou
人工智能领域新星创作者
博客专家认证
2009-09-26 07:36:46
0040170C pop edi
0040170D pop esi
0040170E pop ebx
0040170F add esp,4Ch
00401712 cmp ebp,esp
00401714 call __chkesp (00420b60)
00401719 mov esp,ebp
0040171B pop ebp
0040171C ret 8

问题:
ret指令作为从当前函数返回到被调用函数的指令,它一定要有一个参数作为返回地址,请问这个参数是当前esp指针所指向的堆栈栈顶的内容吗?上面这些指令是一个符合_stdcall调用规范的函数被调用后产生的,ret后面的这个数字是什么意思?它肯定不是ret指令的返回地址,那么这个数字代表什么?

...全文
1200 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
thy38 2009-09-26
  • 打赏
  • 举报
回复
向上数,1、2、3、4、5、6、7
正好8
ckc 2009-09-26
  • 打赏
  • 举报
回复
调用时栈里留了8字节做局部变量用
退回的时候要丢掉这8字节
  • 打赏
  • 举报
回复
恢复栈 调用的时候不是有压栈么,这里就是恢复栈

65,201

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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