在Delphi中使用Assembly的好资源?

Sha*_*ews 7 delphi optimization assembly basm

有没有资源学习如何在Delphi中使用汇编?

背景资料

我已经找到并阅读了一些通用程序集和指令集引用(x86,MMX,SSE等).但我发现很难在Delphi中应用这些信息.一般的事情,如如何获得类属性的价值等.

我希望在优化代码时可以选择使用汇编.

我明白:

  • 打败编译器会很困难.
  • 与低级装配优化相比,高级优化技术更有可能将性能提高几个数量级.(例如选择不同的算法,缓存等)
  • 分析至关重要.我正在使用Sampling Profiler进行实际性能分析,并将cpu循环计数用于低级细节.

我有兴趣学习如何在Delphi中使用汇编,因为:

  • 在工具箱中使用另一个工具不会有什么坏处.
  • 它将有助于理解编译器生成的程序集输出.
  • 了解编译器正在做什么可能有助于编写性能更好的pascal代码.
  • 我很好奇.

Bob*_*b A 12

这是一个可能有用的资源...

www.guidogybels.eu/docs/Using%20Assembler%20in%20Delphi.pdf

(我想用@Glenn添加评论这个信息,但我被迫使用了答案机制,因为我是这个论坛的新手而且没有足够的代表......)


Jer*_*ers 6

大多数优化都涉及创建更好的算法:通常可以获得"数量级"速度改进的地方.

x64汇编世界是对x86汇编世界的重大改变.这意味着随着XE2中Delphi中引入x64(很快就会出现),您将不得不两次编写所有汇编代码.

在Delphi中获得更好的算法可以让您完全编写汇编代码.

汇编可以提供帮助的主要领域(但通常巧妙地制作Delphi代码也有很多帮助)是低级别的位/字节错误,例如在进行加密时.另一方面,FastMM(Delphi的快速内存管理器)几乎所有代码都是用Delphi编写的.

正如Macro已经写过的那样:从反汇编代码开始通常是一个好的开始.但是装配优化可以走得很远.
可以用作起点的示例是例如SynCrypto单元,它具有使用Delphi或汇编代码的选项.


Gle*_*234 5

我阅读你的帖子的方式,你不是在寻找汇编资源作为资源来解释如何在内存中构建Delphi声明,以便你可以通过汇编程序访问它们.这确实很难找到,但并非不可能.

是一个很好的资源,我发现它开始理解Delphi如何构造它的声明.由于汇编只涉及自己与离散数据地址CPU定义的数据类型,你只要你了解它,正确地访问它是罚款与任何德尔福结构.

唯一的另一个问题是如何与Delphi过程和函数头交互以获得所需的数据(假设您想使用Delphi内联工具进行汇编),但这只涉及对标准函数调用约定的理解. 将是理解那些为此非常有用.

现在使用实际的汇编程序(链接的OBJ文件)而不是内联汇编程序是另一个主题,它将根据所选的汇编程序而有所不同.您也可以找到相关信息,但如果您有兴趣,也可以随时提出这个问题.

HTH.