首页
社区
课程
招聘
[原创]易语言和VC++的对比
发表于: 2015-6-18 23:26 11230

[原创]易语言和VC++的对比

2015-6-18 23:26
11230

晚上无聊,易语言 和 Visual C++ 6.0 (以下内容简称C++) 编写了 相同的代码
但是编译后 用OD 查看其汇编代码 表示很无奈 
 
 
C++ 的汇编代码结构清晰 代码量少 
 
 
而易语言代码浑浊 上跳下跳 占用不少字节(相对C++) 
 
下面 我贴上 两个程序的汇编代码 
 
 
C++: 
 
00401005  /$ /E9 06000000   jmp Hello.WinMain 
0040100A  |  |CC            int3 
0040100B  |  |CC            int3 
0040100C  |  |CC            int3 
0040100D  |  |CC            int3 
0040100E  |  |CC            int3 
0040100F  |  |CC            int3 
00401010 >|> \55            push ebp 
00401011  |.  8BEC          mov ebp,esp 
00401013  |.  83EC 40       sub esp,0x40 
00401016  |.  53            push ebx 
00401017  |.  56            push esi 
00401018  |.  57            push edi 
00401019  |.  8D7D C0       lea edi,[local.16] 
0040101C  |.  B9 10000000   mov ecx,0x10 
00401021  |.  B8 CCCCCCCC   mov eax,0xCCCCCCCC 
00401026  |.  F3:AB         rep stos dword ptr es:[edi] 
00401028  |.  8BF4          mov esi,esp 
0040102A  |.  6A 00         push 0x0                                 ; /Style = MB_OK|MB_APPLMODAL 
0040102C  |.  68 2C204200   push Hello.0042202C                      ; |Title = "C++" 
00401031  |.  68 1C204200   push Hello.0042201C                      ; |Text = "Hello Word" 
00401036  |.  6A 00         push 0x0                                 ; |hOwner = NULL 
00401038  |.  FF15 ACA24200 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA 
0040103E  |.  3BF4          cmp esi,esp 
00401040  |.  E8 3B000000   call Hello._chkesp 
00401045  |.  33C0          xor eax,eax 
00401047  |.  5F            pop edi 
00401048  |.  5E            pop esi 
00401049  |.  5B            pop ebx 
0040104A  |.  83C4 40       add esp,0x40 
0040104D  |.  3BEC          cmp ebp,esp 
0040104F  |.  E8 2C000000   call Hello._chkesp 
00401054  |.  8BE5          mov esp,ebp 
00401056  |.  5D            pop ebp 
00401057  \.  C2 1000       retn 0x10 
 
占用字节 82 byte 
 

 
00401150   .  83EC 64       sub esp,0x64 
00401153   .  56            push esi 
00401154   .  8B7424 74     mov esi,dword ptr ss:[esp+0x74] 
00401158   .  57            push edi 
00401159   .  8B7E 08       mov edi,dword ptr ds:[esi+0x8] 
0040115C   .  57            push edi 
0040115D   .  E8 AE830000   call E_langua.00409510 
00401162   .  83C4 04       add esp,0x4 
00401165   .  85C0          test eax,eax 
00401167   .  74 10         je short E_langua.00401179 
00401169   .  8D4424 08     lea eax,dword ptr ss:[esp+0x8] 
0040116D   .  50            push eax 
0040116E   .  56            push esi 
0040116F   .  E8 2CFFFFFF   call E_langua.004010A0 
00401174   .  83C4 08       add esp,0x8 
00401177   .  EB 42         jmp short E_langua.004011BB 
00401179   >  81FF 04000080 cmp edi,0x80000004                       ;  分支 (案例 80000002..80000004) 
0040117F   .  75 04         jnz short E_langua.00401185 
00401181   .  8B0E          mov ecx,dword ptr ds:[esi]               ;  案例 80000004 (SINGLE STEP) --> 分支 00401179 
00401183   .  EB 3A         jmp short E_langua.004011BF 
00401185   >  81FF 02000080 cmp edi,0x80000002 
0040118B   .  75 12         jnz short E_langua.0040119F 
0040118D   .  8B16          mov edx,dword ptr ds:[esi]               ;  案例 80000002 (DATATYPE MISALIGNMENT) --> 分支 00401179 
0040118F   .  8D4C24 08     lea ecx,dword ptr ss:[esp+0x8] 
00401193   .  51            push ecx 
00401194   .  52            push edx 
00401195   .  E8 C6470100   call E_langua.00415960 
0040119A   .  83C4 08       add esp,0x8 
0040119D   .  EB 1C         jmp short E_langua.004011BB 
0040119F   >  81FF 03000080 cmp edi,0x80000003 
004011A5   .  75 1C         jnz short E_langua.004011C3 
004011A7   .  8B4E 04       mov ecx,dword ptr ds:[esi+0x4]           ;  案例 80000003 (BREAKPOINT) --> 分支 00401179 
004011AA   .  8B16          mov edx,dword ptr ds:[esi] 
004011AC   .  8D4424 08     lea eax,dword ptr ss:[esp+0x8] 
004011B0   .  50            push eax 
004011B1   .  51            push ecx 
004011B2   .  52            push edx 
004011B3   .  E8 D8400100   call E_langua.00415290 
004011B8   .  83C4 0C       add esp,0xC 
004011BB   >  8D4C24 08     lea ecx,dword ptr ss:[esp+0x8] 
004011BF   >  85C9          test ecx,ecx 
004011C1   .  75 09         jnz short E_langua.004011CC 
004011C3   >  C64424 08 00  mov byte ptr ss:[esp+0x8],0x0            ;  分支 00401179 默认案例 
004011C8   .  8D4C24 08     lea ecx,dword ptr ss:[esp+0x8] 
004011CC   >  8B46 20       mov eax,dword ptr ds:[esi+0x20] 
004011CF   .  BA 9C414700   mov edx,E_langua.0047419C 
004011D4   .  85C0          test eax,eax 
004011D6   .  74 03         je short E_langua.004011DB 
004011D8   .  8B56 18       mov edx,dword ptr ds:[esi+0x18] 
004011DB   >  8B46 0C       mov eax,dword ptr ds:[esi+0xC] 
004011DE   .  8BF0          mov esi,eax 
004011E0   .  F7D6          not esi 
004011E2   .  81E6 00100000 and esi,0x1000 
004011E8   .  8D0470        lea eax,dword ptr ds:[eax+esi*2] 
004011EB   .  50            push eax                                 ; /Style 
004011EC   .  52            push edx                                 ; |Title 
004011ED   .  51            push ecx                                 ; |Text 
004011EE   .  6A 00         push 0x0                                 ; |hOwner = NULL 
004011F0   .  FF15 A0334600 call dword ptr ds:[<&USER32.MessageBoxA>>; \MessageBoxA 
004011F6   .  5F            pop edi 
004011F7   .  83F8 03       cmp eax,0x3                              ;  分支 (案例 2..7) 
004011FA   .  5E            pop esi 
004011FB   .  75 0F         jnz short E_langua.0040120C 
004011FD   .  8B4C24 68     mov ecx,dword ptr ss:[esp+0x68]          ;  案例 3 --> 分支 004011F7 
00401201   .  B8 02000000   mov eax,0x2 
00401206   .  8901          mov dword ptr ds:[ecx],eax 
00401208   .  83C4 64       add esp,0x64 
0040120B   .  C3            retn 
0040120C   >  83F8 02       cmp eax,0x2 
0040120F   .  75 0F         jnz short E_langua.00401220 
00401211   .  8B5424 68     mov edx,dword ptr ss:[esp+0x68]          ;  案例 2 --> 分支 004011F7 
00401215   .  B8 01000000   mov eax,0x1 
0040121A   .  8902          mov dword ptr ds:[edx],eax 
0040121C   .  83C4 64       add esp,0x64 
0040121F   .  C3            retn 
00401220   >  83F8 05       cmp eax,0x5 
00401223   .  75 0F         jnz short E_langua.00401234 
00401225   .  8B4C24 68     mov ecx,dword ptr ss:[esp+0x68]          ;  案例 5 --> 分支 004011F7 
00401229   .  B8 04000000   mov eax,0x4 
0040122E   .  8901          mov dword ptr ds:[ecx],eax 
00401230   .  83C4 64       add esp,0x64 
00401233   .  C3            retn 
00401234   >  83F8 07       cmp eax,0x7 
00401237   .  75 0F         jnz short E_langua.00401248 
00401239   .  8B5424 68     mov edx,dword ptr ss:[esp+0x68]          ;  案例 7 --> 分支 004011F7 
0040123D   .  B8 06000000   mov eax,0x6 
00401242   .  8902          mov dword ptr ds:[edx],eax 
00401244   .  83C4 64       add esp,0x64 
00401247   .  C3            retn 
00401248   >  83F8 06       cmp eax,0x6 
0040124B   .  75 0F         jnz short E_langua.0040125C 
0040124D   .  8B4C24 68     mov ecx,dword ptr ss:[esp+0x68]          ;  案例 6 --> 分支 004011F7 
00401251   .  B8 05000000   mov eax,0x5 
00401256   .  8901          mov dword ptr ds:[ecx],eax 
00401258   .  83C4 64       add esp,0x64 
0040125B   .  C3            retn 
0040125C   >  33D2          xor edx,edx                              ;  分支 004011F7 默认案例 
0040125E   .  8B4C24 68     mov ecx,dword ptr ss:[esp+0x68] 
00401262   .  83F8 04       cmp eax,0x4 
00401265   .  0F95C2        setne dl 
00401268   .  4A            dec edx 
00401269   .  83E2 03       and edx,0x3 
0040126C   .  8BC2          mov eax,edx 
0040126E   .  8901          mov dword ptr ds:[ecx],eax 
00401270   .  83C4 64       add esp,0x64 
00401273   .  C3            retn 
 
占用字节 291 byte


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 3
支持
分享
最新回复 (17)
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
毕竟E是封装
2015-6-18 23:36
0
雪    币: 345
活跃值: (57)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
对比了就说明你LOW了
2015-6-19 01:31
0
雪    币: 207
活跃值: (39)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
研究一下用来破解就行了
2015-6-19 08:11
0
雪    币: 67
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
地球人都知道易语言是简单的封装调用Win32 API,这还用得着反汇编对比吗?
2015-6-19 09:14
0
雪    币: 31
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
类似初始化代码吧. 你静态编译c程序也是差不多的.
2015-6-19 09:16
0
雪    币: 511
活跃值: (353)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
7
非常不喜欢E,看到就心慌气短、头晕恶心
2015-6-19 20:42
0
雪    币: 98
活跃值: (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我不知道我是菜鸟
2015-6-19 20:54
0
雪    币: 98
活跃值: (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
那怎么办.学其他什么语言啊,我准备下e语言,并且,学习他,用他入门,然后学习c,
2015-6-19 20:57
0
雪    币: 67
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
建议立马转行,这行你玩不了!
2015-6-19 21:37
0
雪    币: 511
活跃值: (353)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
11
E除了汉字外没有任何特点,不过好像有很多模块可以骗骗小白,要是想深入编程精髓还是算了吧。其实就简洁来说,字符型语言秒E好几条街。入门你还不如学Python呢,E就算了吧。
2015-6-20 08:46
0
雪    币: 98
活跃值: (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
入门,用e把,逼近国内越来越多的人用e易语言,python完全要自己摸索
2015-6-20 09:54
0
雪    币: 98
活跃值: (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我别的也做不了,下力没有力要,身高没有身高.智力也低,英语连幼儿园小朋友不及
2015-6-20 10:03
0
雪    币: 98
活跃值: (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
易语言我还是有信心攻破他的
2015-6-20 10:53
0
雪    币: 511
活跃值: (353)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
15
如果你连尝试的勇气都没有,你还是不要玩了。编程所需要的英语单词量也就几十个而已,主要是学习语法及思想,而且相关的中文文档也比较齐全。
没感觉国内用E的越来越多,E只能当个积木玩具来使。
2015-6-20 18:30
0
雪    币: 88
活跃值: (431)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
入门还是感觉python比较好,e语言大部分人用来做外挂
2015-6-20 19:00
0
雪    币: 98
活跃值: (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
python更多是过程,
要学python.也是只有wxpython比较合适我,我看过那
而且我学编程就是为了制作工具
2015-6-22 18:57
0
雪    币: 98
活跃值: (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
我刚刚看了
python更多是过程,我觉得我还是无法,在无图形界面当中学习.
要学python.也是只有wxpython比较合适我,我看过那
而且我学编程就是为了制作工具
2015-6-22 19:18
0
游客
登录 | 注册 方可回帖
返回
//