首页
社区
课程
招聘
[旧帖] [求助]在for里面定义的变量 0.00雪花
发表于: 2014-10-1 12:06 2797

[旧帖] [求助]在for里面定义的变量 0.00雪花

2014-10-1 12:06
2797
for(int i=0;i<5;i++){

变量i  的反汇编 为什么是这样的  

011D35AC C7 45 80 00 00 00 00 mov         dword ptr [i],0  

变量i是存储在栈里面吧,为什么没有用  [ebp-68h] 这种形式

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 623
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
这是 vs 的反汇编器里的显示形式,
在 mov dword ptr [i], 0 这条语句里,i 可能代表着 global 或者 local 变量
在这个例子里,i 代表着 [ebp-0x80] 也就是 local 变量

C7 45 80 00 00 00 00        ===> 译为:   mov dword ptr [ebp-0x80], 0
2014-10-1 12:26
0
雪    币: 345
活跃值: (57)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
好像是gcc里必须在前面定义i~不允许在for语句中定义
2014-10-1 13:05
0
雪    币: 4928
活跃值: (967)
能力值: ( LV9,RANK:175 )
在线值:
发帖
回帖
粉丝
4
反汇编for(int i=0;i<5;i++)之后是
00401188   mov         dword ptr [ebp-4],0
0040118F   jmp         main+2Ah (0040119a)
00401191   mov         eax,dword ptr [ebp-4]
00401194   add         eax,1
00401197   mov         dword ptr [ebp-4],eax
0040119A   cmp         dword ptr [ebp-4],5
0040119E   jge         main+32h (004011a2)
其中i表示的的却是ptr [ebp-4]这种形式呀...
2014-10-1 13:53
0
雪    币: 1443
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
因为你有pdb,调试器识别出了局部变量的名字叫i,所以就直接显示了,你可以在modules选项卡里找到你的模块,右键选择unload symbol,这时就是ebp-xx的形式了。
2014-10-1 13:56
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
c不允许  , c++可以
2014-10-1 16:48
0
游客
登录 | 注册 方可回帖
返回
//