首页
社区
课程
招聘
[旧帖] [求助]加密与解密第4章问题。。 0.00雪花
发表于: 2013-12-26 19:29 1486

[旧帖] [求助]加密与解密第4章问题。。 0.00雪花

2013-12-26 19:29
1486
在 利用寄存器传递参数中 关于thiscall的部分第一个例子的代码中有 push ecx. mov [ebp-4],ecx.
请问为什么要把ecx压栈两次? 而且程序中没有代码去为局部变量扩展栈,也就是没有sub esp,8h。请问什么时候需要用sub esp,8h,什么时候不需要这个代码就可以直接 mov [ebp-4],ecx?? 请大神赐教  感激不尽

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 3
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
编译器会为每个c++成员函数默认的加上一个this指针,这个this指针一般是放在ecx寄存器中的,push ecx是保存ecx中的值将其入栈,mov [ebp-4],ecx是将ecx中保存的this指针给一个临时变量[ebp-4]。你说的第一个push ecx是保存上一个栈帧中要用的值。你自己在vc中把代码敲进去在反汇编来看看反汇编代码他是有为局部变量分配空间的。
2013-12-27 12:34
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好像明白了。。 谢谢!
2013-12-27 14:27
0
游客
登录 | 注册 方可回帖
返回
//