【发布时间】:2020-02-02 07:23:52
【问题描述】:
我刚刚读到汇编代码可以直接包含在 C/C++ 程序中,比如,
__asm statement
__asm {
statement-1
statement-2
...
statement-n
}
我只是想知道在什么情况下在 C/C++ 中包含汇编代码会有用。
【问题讨论】:
-
简单,几乎无处。
-
不要误会我的意思,但你为什么要这样做?它大大降低了可读性,而好的代码就是可读性。
-
在过去,人类可以编写比某些编译器更快、更紧凑的程序集。因此,当编译器做得不好时,人类会求助于内联汇编来完成工作。如今,汇编代码非常先进(即复杂和令人费解),编译器非常好,很少有内联汇编的理由。
-
在 x86 平台上可以有用的是 SSE/AVX/等。内部函数,其中大部分是一对一映射到指令,但与内联汇编不同,编译器实际上可以理解,并受到优化、其寄存器分配算法等的影响。
-
如果它没有用,我认为首先不会提供此功能。我只想知道是否还有其他原因,例如提到的@user3386109。我还有一个问题是,现在任何 C++ 编译器是否都支持此功能,如果支持,是否只是为了支持遗留系统。
标签: c++ c assembly inline-assembly