我需要将一些代码转换为Intel i7-8705G的ISA,但我不知道它使用的x86-64 ISA版本。
我想使用Godbolt here并从下拉列表中选择ISA,但是x86-64有多个版本。哪种处理器最适合我的处理器?
我很惊讶地看到几个版本。在intel网站上,它只是将其列为64位。 here
答案 0 :(得分:3)
我需要将一些代码转换为Intel i7-8705G的ISA,但是我不知道它使用的x86-64 ISA版本。
x86-64 ISA没有版本。这是具有大量可选扩展的8086的指令集,其中(至少在理论上)这些扩展中的每个扩展都可以在任何(现有或将来的)80x86 CPU上存在/不存在,并且其中大多数扩展都在其中指明由CPUID
指令返回的一组大约100个标志来表示存在/不存在。
为弄清所有可能性,GCC(其-mtune
和-march
选项)基于英特尔提供的微体系结构名称已预定义了“ CPU名称”。对于Intel i7-8705G,微架构为“ Kaby Lake”。 GCC的最新版本没有Kaby Lake的预定义名称。但是Kaby Lake是对先前的微体系结构的优化,英特尔将其称为Skylake,而GCC确实具有预定义的名称“ skylake”,因此这将是最佳选择(例如-march=skylake
)。
注:我在godbolt上找不到任何体系结构的下拉列表,所以我想知道您是否感到困惑并正在考虑其他问题(编译器列表,其中每个编译器具有多个版本)。