【发布时间】:2011-01-08 00:12:38
【问题描述】:
是否有可能编译一些自动利用它在指令集上运行的不同处理器的东西?
最好是在 gcc 和 c 上,而不是在代码中明确地这样做。
-mtune(单独)会做吗?
【问题讨论】:
-
是的,它叫 java。 =P
标签: optimization gcc compilation
是否有可能编译一些自动利用它在指令集上运行的不同处理器的东西?
最好是在 gcc 和 c 上,而不是在代码中明确地这样做。
-mtune(单独)会做吗?
【问题讨论】:
标签: optimization gcc compilation
最新版本的 gcc 有 -march=native,它将生成代码以使用运行编译器的机器上可用的所有指令集扩展,但它不会生成在运行时检测哪些扩展可用的二进制文件。可以编写代码来检测哪些扩展可用并基于它使用不同的代码路径(这是对性能敏感的代码(如游戏引擎)的常用技术),但我不知道有任何工具可以自动生成它代码和不同版本的代码。
如果您想创建一个可以在多种不同架构(如 x86 和 ARM)上运行的二进制文件,您需要创建一个称为 fat binary 的东西,或者用 Apple 的营销术语来说,一个 通用二进制文件:这需要为每个架构编译一次代码,并将不同架构的二进制文件链接到同一个文件中。这仅适用于支持胖二进制文件的操作系统,因为操作系统需要知道它必须只加载正确架构的段。
【讨论】: