【发布时间】:2011-02-19 20:22:09
【问题描述】:
我正在编写一个性能关键、数字运算的 C++ 项目,其中 70% 的时间用于 200 行核心模块。
我想使用内联汇编优化核心,但我对此完全陌生。不过,我确实知道一些 x86 汇编语言,包括 GCC 和 NASM 使用的那种。
我所知道的:
我必须将汇编程序指令放在我希望它们所在的_asm{} 中。
问题:
- 我不知道从哪里开始。当我的内联汇编开始起作用时,哪个寄存器在哪个寄存器中?
【问题讨论】:
-
请记住,“仅在 ASM 中编写”不会让它变得更快。为了让它做到这一点,你需要比编译器更擅长优化 ASM。
-
相关:C++ code for testing the Collatz conjecture faster than hand-written assembly - why?。通常,您可以调整 C++ 源代码以手动控制编译器以制作更好的 asm。此外,MSVC 内联汇编语法对小块不利,因为输入必须在内存中而不是寄存器中。 What is the difference between 'asm', '__asm' and '__asm__'?.
标签: c++ visual-studio-2010 visual-c++ inline-assembly micro-optimization