C反汇编实例(详细注解版)(三)

本文详细分析了release模式下,经过VC编译器O2优化的C算法反汇编代码,展示了优化后的代码如何失去了语句对应顺序,但仍然可以理解。通过逐行解释汇编指令,揭示了编译器如何使用寄存器提高效率,以及如何通过优化减少变量使用。文章适合对汇编和编译器优化感兴趣的读者。
摘要由CSDN通过智能技术生成
 

         上次我分析了一下,debug模式下反汇编后的算法部分代码,天才的您可能觉得不算糟,想再搞点花样,那么本文就能满足你的需求。天书夜读上其实还贴出来了release模式下的代码,它经过vc编译器O2的优化,我初次看到反汇编代码时,还真汗了一把。不过定下心来细细品位还是可以看懂的,尽管正如原书所说,连语句的对应顺序也已经不见了。。。

         废话不多说,先贴出代码大伙“饱饱眼福”。。。

00401000 mov eax,dword ptr [esp+4]

00401004 mov edx,dword ptr [esp+0Ch]

00401008 mov ecx,dword ptr [esp+8]

0040100C push ebx

0040100D push esi

0040100E add eax,4

00401011 push edi

00401012 add edx,8

00401015 mov esi,3

0040101A lea ebx,[ebx]

00401020 mov ebx,dword ptr [eax]

00401022 imul ebx,dword ptr [ecx+0Ch]

00401026 mov edi,dword ptr [ecx+18h]

00401029 imul edi,dword ptr [eax+4]

0040102D add edi,ebx

0040102F mov ebx,dword ptr [eax-4]

00401032 imul ebx,dword ptr [ecx]

00401035 add edi,ebx

00401037 mov dword ptr [edx-8],edi

0040103A mov ebx,dword ptr [eax]

0040103C imul ebx,dword ptr [ecx+10h]

00401040 mov edi,dword ptr [ecx+1Ch]

00401043 imul edi,dword ptr [eax+4]

00401047 add edi,ebx

00401049 mov ebx,dword ptr [eax-4]

0040104C imul ebx,dword ptr [ecx+4]

00401050 add edi,ebx

00401052 mov dword ptr [edx-4],edi

00401055 mov ebx,dword ptr [eax+4]

00401058 imul ebx,dword ptr [ecx+20h]

0040105C mov edi,dword ptr [ecx+14h]

0040105F imul edi,dword ptr [eax]

00401062 add edi,ebx

00401064 mov ebx,dword ptr [eax-4]

00401067 imul ebx,dword ptr [ecx+8]

0040106B add edi,ebx

0040106D mov dword ptr [edx],edi

0040106F add eax,0Ch

00401072 add edx,0Ch

00401075 dec esi

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值