| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 598 人关注过本帖
标题:大家帮我看一段c编译过后的汇编代码 帮我解释一下
只看楼主 加入收藏
zmhdxy
Rank: 1
等 级:新手上路
帖 子:452
专家分:0
注 册:2007-9-27
收藏
 问题点数:0 回复次数:2 
大家帮我看一段c编译过后的汇编代码 帮我解释一下
4:        char *p="abcd";
00401028   mov         dword ptr [ebp-4],offset string "abcd" (0042201c)
5:        char q[10]="abcd";
0040102F   mov         eax,[string "abcd" (0042201c)]
00401034   mov         dword ptr [ebp-10h],eax
00401037   mov         cl,byte ptr [string "abcd"+4 (00422020)]
0040103D   mov         byte ptr [ebp-0Ch],cl
00401040   xor         edx,edx
00401042   mov         dword ptr [ebp-0Bh],edx
00401045   mov         byte ptr [ebp-7],dl
先感谢了 我对汇编了解一点
搜索更多相关主题的帖子: 编译 汇编 代码 解释 
2008-04-29 15:53
lnhaing
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-1-30
收藏
得分:0 
什么IDE?

我来自偶然! bitter C
2008-04-29 16:45
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
4:        char *p="abcd";
00401028   mov         dword ptr [ebp-4],offset string "abcd" (0042201c)

这个就不用说了吧?p变量的位置是ebp-4,可以看出是第一个局部变量……我们算算,q是第二个局部变量,q占十个字节的大小,那么q就应该是ebp-14~ebp-5,但是考虑到字节对齐,编译器选择了ebp-16(即下文的ebp-10h)~ebp-7讨论到了这里。接着看。
5:        char q[10]="abcd";
0040102F   mov         eax,[string "abcd" (0042201c)]
00401034   mov         dword ptr [ebp-10h],eax
啊,很明显,编译器做了优化,将那个字符串当作一个Dword,直接通过eax以间接寻址的方式送到了ebp-10h(是不是很阴?我也这么觉得!)
00401037   mov         cl,byte ptr [string "abcd"+4 (00422020)]
0040103D   mov         byte ptr [ebp-0Ch],cl
然后呢,在abcd的后面,填上一个字节的0,也就是字符串结束的'\0'
00401040   xor         edx,edx
00401042   mov         dword ptr [ebp-0Bh],edx
然后呢,再填充字符串(已经5个字节了)后面的四个0
00401045   mov         byte ptr [ebp-7],dl
是10长度的数组嘛,填充了5+4=9个字节,再接再厉,最后一个字节Orz……

分析完毕。其实没什么价值的说……

[[it] 本帖最后由 StarWing83 于 2008-4-29 17:02 编辑 [/it]]

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-04-29 17:01
快速回复:大家帮我看一段c编译过后的汇编代码 帮我解释一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016090 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved