是否有任何优秀,现代的在线指南可用于优化汇编代码?

时间:2010-09-24 20:51:15

标签: optimization assembly

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

我对组装过程充分了解并寻找手动优化 - 但我想知道,如果有任何优秀的在线指南提供可重复使用的技术,可用于手动优化装配。这不是我希望我经常要做的事情,所以我很可能每次都要从头开始学习如何做到这一点。

5 个答案:

答案 0 :(得分:8)

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

我会说“玩得开心”,但它可能真的很有意思:(

我认为你对第9章“优化速度”感兴趣。

答案 1 :(得分:5)

答案 2 :(得分:1)

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

一般情况下,通过帮助编译器(我使用GCC作为示例,你会更进一步,但这也应该与其他编译器相关):

  • 使用编译器选项播放一段时间(-march = native,-mfpmath = sse,-msse3,-marm,-mthumb)
  • 尽可能使用分析信息(-fprofile-generate,-fprofile-use)
  • 调整算法以查看产生“更好”代码的内容((x>>8)&0xFF(x&0xFF00)>>8?这是PPC上的一条指令,但编译器可能会使用两条指令。
  • 调整您的算法,以便更好地使用缓存。
  • 如果编译器支持,请使用vector extensions。您的编译器可能还有target-specific builtinsx86ARM NEON)。
  • 使用更好的编译器(ARMCT为RVCT,x86为ICC)

如果你能比一个体面的C编译器加速超过20%,我会感到惊讶,除非有编译器没有使用的特定指令/功能。除非你的所有应用都是如此,否则20%很少值得写回家。

答案 3 :(得分:1)

Agner Fog的网站似乎是一个常见的回应。我发现多年来特别有用的另一页是Paul Hsieh的页面......

http://www.azillionmonkeys.com/qed/tech.shtml

答案 4 :(得分:0)

我同意以前的答案,建议Agner Fog的优化手册。他们真的很棒。

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

Intel 64 and IA-32 Architectures Optimization Reference Manual

Software Optimization Guide for AMD Family 10h Processors

相关问题