代码之家  ›  专栏  ›  技术社区  ›  blueberryfields

有什么好的,现代的,在线指南来手工优化汇编代码吗?[关闭]

  •  14
  • blueberryfields  · 技术社区  · 15 年前

    我正在编写一些代码,其中包含一些(编译器生成的)汇编代码块,我们已经确定这些代码块是速度瓶颈。

    我对组装有足够的了解,可以蒙混过关,寻找手动优化——不过,我想知道是否有什么好的在线指南,提供可重用的技术,用于手动优化组装。这不是我期望我必须经常做的事情,所以很可能我每次都要从零开始学习如何去做。

    5 回复  |  直到 15 年前
        1
  •  8
  •   David Titarenco    15 年前

    http://www.agner.org/optimize/optimizing_assembly.pdf

    我会说“玩得开心”,但可能真的很刻薄:(

    我想你对第九章“速度优化”很感兴趣。

        2
  •  5
  •   Anycorn    15 年前
        3
  •  1
  •   tc.    15 年前

    虽然这可能不需要说。。。

    一般来说,通过帮助编译器,您会更进一步(我以GCC为例,但这也应该与其他编译器相关):

    • 使用编译器选项玩一会儿(-march=native、-mfpmath=sse、-msse3、-marm、-mthumb)
    • 调整算法,看看是什么产生了“更好”的代码( (x>>8)&0xFF (x&0xFF00)>>8
    • 调整您的算法,使其更好地使用缓存。
    • vector extensions target-specific builtins ( x86 , ARM NEON ).
    • 使用更好的编译器(RVCT用于ARM,ICC用于x86)

    我会很惊讶,如果你能得到超过20%的速度比一个像样的C编译器,除非有具体的指令/功能,编译器不使用。20%很少值得写在家里,除非你的应用程序都这么做。

        5
  •  0
  •   PhiS    15 年前

    Agner Fog 的优化手册。他们真的很棒。

    不过,除此之外,英特尔和AMD还提供了一些免费的优化手册,例如,您可能会对以下内容感兴趣:

    Intel 64 and IA-32 Architectures Optimization Reference Manual

    Software Optimization Guide for AMD Family 10h Processors