【发布时间】:2019-04-17 17:18:09
【问题描述】:
Microsoft Visual Studio 有一个名为“内联汇编”的功能,它使您能够在 __asm 块内的 c++ 程序中编写 x86 代码。
现在我有一个关于此功能的问题。
这个块中的寄存器是真正的寄存器还是只是来自寄存器的一些虚拟化?
使用此寄存器(如 eax 、 ebx 等)是否会提高性能?
【问题讨论】:
-
寄存器是真实的。是的,如果您使用它们,性能通常会得到改善。请注意,C 编译器有一个非常好的优化器,它在选择寄存器方面通常比你做得更好,所以你应该避免使用内联汇编,除非你确切地知道你在做什么。
-
一些 C 编译器,例如 armcc,确实在内联汇编中使用虚拟寄存器。 Microsoft 或 GCC 内联汇编都没有。
标签: c++ visual-studio assembly x86 inline-assembly