免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: javacool
打印 上一主题 下一主题

请教一个有关虚拟内存的问题 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
41 [报告]
发表于 2004-12-16 09:08 |只看该作者

请教一个有关虚拟内存的问题

^_^,不好意思,写错了。
是的,参数压栈是A做的,然后CALL B,它就不管了。

论坛徽章:
0
42 [报告]
发表于 2004-12-16 09:24 |只看该作者

请教一个有关虚拟内存的问题

EBP的保存是为了函数在调用之后还能返回到调用函数的栈状态
而返回地址的保存是在什么地方? 是不是保存调用函数CALL指令的下一条(也就是CALL指令时的PC+1)?也就是当传递参数时必须有的 add esp ***指令地址?
可是我在EXE中没找到这个阿? 能不能讲的再详细一点

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
43 [报告]
发表于 2004-12-16 09:29 |只看该作者

请教一个有关虚拟内存的问题

原帖由 "javacool" 发表:
EBP的保存是为了函数在调用之后还能返回到调用函数的栈状态
而返回地址的保存是在什么地方? 是不是保存调用函数CALL指令的下一条(也就是CALL指令时的PC+1)?也就是当传递参数时必须有的 add esp ***指令地址?
..........


返回地址是你说的那样,一般的汇编教材中对CALL的指令的讲解中有详细的解释。
另外,传递参数和add指令没有什么关系啊?一般是push指令,所以说“参数入栈”嘛。

论坛徽章:
0
44 [报告]
发表于 2004-12-16 09:49 |只看该作者

请教一个有关虚拟内存的问题

我说的add esp ***是在调用过程中调整栈的 被调用函数是不负责传入参数这段栈空间的回收的 就向A调B 参数压栈和最后的恢复都是在A中做 add esp ***是恢复时做的
此外压栈的PC是怎么压进去的? 我没看到一条明确的指令 难道真如楼上的所说 是CALL指令自动压的? 是不是在保存EBP之前做的?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
45 [报告]
发表于 2004-12-16 09:55 |只看该作者

请教一个有关虚拟内存的问题

第一点你说的对。
第二点的确就是call指令的隐含动作。请翻书或者搜索call指令的解释。

论坛徽章:
0
46 [报告]
发表于 2004-12-16 10:20 |只看该作者

请教一个有关虚拟内存的问题

哦 回去再看看汇编的书 早忘光了
谢谢大家了:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP