zoukankan      html  css  js  c++  java
  • 编译器的优化

    编译器使用的优化技巧

       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、堆栈恢复优化

  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    基于分布式锁解决定时任务重复问题
    基于Redis的Setnx实现分布式锁
    基于数据库悲观锁的分布式锁
    使用锁解决电商中的超卖
  • 原文地址:https://www.cnblogs.com/xiangtingshen/p/11212807.html
Copyright © 2011-2022 走看看