内联汇编是否便于携带?

Dav*_*eng 4 c++ optimization x86 assembly portability

假设您编写了一个可在不同平台上顺利运行的可移植C++代码.要进行一些修改以优化性能,可以在代码中使用内联汇编.这是一个好的做法(编译器优化预留)还是会给可移植性带来麻烦?

小智 13

显然它破坏了可移植性 - 代码只适用于汇编语言所针对的特定体系结构.而且,这通常是浪费时间 - 编译器的优化器几乎肯定比编写汇编代码更好.


Jer*_*fin 6

显然,内联组件甚至不便于携带.为了保持任何可移植性,您通常必须使用#ifdef(或该订单上的某些内容)来确定何时使用它.

我自己的偏好是将汇编语言分隔成一个单独的文件,并在makefile中决定是构建可移植版本还是汇编语言版本.

  • 另外,请注意,仅仅因为这段代码是一个平台上经过验证的瓶颈,并且仅仅因为您设法通过汇编程序编码提高了该平台上的性能,并不意味着这些事情在其他平台上都是正确的。因此,在正确分析之前,原始代码仍然是新平台上的第一次尝试。 (2认同)