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

  • 相关阅读:
    postgresql一般crud存储过程参考[转]
    用PL/pgSQL写postgreSQL的存储过程[转]
    Linux-软件包管理-yum在线安装rz、sz工具
    NuGet学习笔记(2) 使用图形化界面打包自己的类库[转]
    Maven内置隐式变量[转]
    STS(Spring Tool Suite)使用maven添加jar包
    STS(Spring Tool Suite)创建maven项目
    在ASP.Net和IIS中删除不必要的HTTP响应头[转]
    使用maven创建一个例子
    maven pom.xml 配置详解
  • 原文地址:https://www.cnblogs.com/xiangtingshen/p/11212807.html
Copyright © 2011-2022 走看看