编译器的优化

 

编译器使用的优化技巧

   a、1.  变量优化

 

     b、加法的优化

                 变量+变量 = lea reg32,[变量+变量]

变量+变量 = add eax,xx
         变量+常量 = add 变量+常量
         变量+1    = inc 变量

     b、减法的优化

变量-变量 = lea reg32,[变量-变量]

变量-变量 = sub xx,xx
         变量-常量 = add 变量+补码(常量)
         变量-1    = dec 变量

c、乘法优化

变量*常量(为2的幂)=shl eax, n(2^n)(乘数为2的幂)

变量*常量(非2的幂)=lea eax, [变量+变量*n]

变量*变量=Imul reg32

 

 

     d、除法的优化

      普通除法:

mov Reg32_1, XXXXXXXXh(除数)
imul Reg32_2(被除数)

add  edx,Reg32_2

sar   edx,xxx

mov eax,edx

Shr eax,1Fh


                  mov Reg32_1, XXXXXXXXh(除数)
                  imul Reg32_2(被除数)
                  mov Reg32_1, edx
                  shr Reg32_1, 1Fh
                  add Reg32_1, edx
                  应用计算结果
                  (除数=XXXXXXXXh*2^-32 如果倒数被向上圆整了,那么根据sar指令后的数值向下            圆整即可)

           除数为2的次方:
                  mov eax, (被除数)
                  cdq
                  and edx, XXh
                  add eax, edx
                  sar eax, YYh
                  应用计算结果
                  (除数 = XXh+1 或 2^YYh)

e、堆栈恢复优化

 

转载于:https://www.cnblogs.com/xiangtingshen/p/11212807.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值