首页
社区
课程
招聘
[求助]发现个很奇怪的问题
发表于: 2009-10-25 12:15 3181

[求助]发现个很奇怪的问题

2009-10-25 12:15
3181
int c=1;
   return c;

00401036  |.  C745 F4 01000>MOV DWORD PTR SS:[EBP-C],1;c的堆栈
00401046  |.  B8 01000000   MOV EAX,1     ;最后返回的EAX

理应是mov eax ,dword ptr ss:[EBP-C],为什么成了MOV EAX,1
那如果外部一个用于通信的程序正好在两条代码之间用readmemoryex来修改堆栈指,那不是会失败?
                                           -----好久没来论坛了,再次来到论坛,忽然发现看雪又繁荣了很多

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

收藏
免费 1
支持
分享
最新回复 (5)
雪    币: 3
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
编译器的优化结果;  如果再优化一点就是一句 mov  eax, 1;  了,  连栈它都不分配了;
2009-10-25 12:36
0
雪    币: 273
活跃值: (64)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
哈哈,编译器是不是智能到return 1了,如果这样呢?volatile int c=1; return c;这样会不会就不进行代码优化了?
2009-10-25 13:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
估计就直接变成return 1了
2009-10-25 23:41
0
雪    币: 261
活跃值: (32)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
o  ,谢了
2009-10-28 18:17
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
明显会失败
2009-10-28 21:11
0
游客
登录 | 注册 方可回帖
返回
//