Assembly 如何确定哪些英特尔处理器系列支持哪些指令?

Assembly 如何确定哪些英特尔处理器系列支持哪些指令?,assembly,x86,cpu,intel,instructions,Assembly,X86,Cpu,Intel,Instructions,举个例子,我想确切地知道哪些x86处理器系列支持fisttp指令。我很确定它在奔腾4和更高版本上得到了支持,但我想得到一些官方的验证。更重要的是,我想知道它是否得到了进一步的支持:奔腾III上是否提供了它 我尝试了所有明显的谷歌搜索词,但几乎没有任何关于这一特定指令的在线信息。即使有,这也不是一个好的普遍解决方案 我了解英特尔IA-32体系结构手册,可在线获取。通过阅读,我可以找到我感兴趣的说明和大量有关它的有趣信息。但手册中没有任何地方告诉我哪些处理器系列支持每条指令,甚至没有告诉我它是在什么

举个例子,我想确切地知道哪些x86处理器系列支持fisttp指令。我很确定它在奔腾4和更高版本上得到了支持,但我想得到一些官方的验证。更重要的是,我想知道它是否得到了进一步的支持:奔腾III上是否提供了它

我尝试了所有明显的谷歌搜索词,但几乎没有任何关于这一特定指令的在线信息。即使有,这也不是一个好的普遍解决方案

我了解英特尔IA-32体系结构手册,可在线获取。通过阅读,我可以找到我感兴趣的说明和大量有关它的有趣信息。但手册中没有任何地方告诉我哪些处理器系列支持每条指令,甚至没有告诉我它是在什么时候首次引入的

我试图找到本手册的旧版本,即奔腾III系列,但我发现所有链接都是空的,指向上面链接的页面,其中包含本手册的当前版本。此外,要为每个家庭翻出手册,看看我所关心的指导是否在那里,这需要做很多工作

当然,这些信息是其他人经常查阅的……他们使用什么资源


注意:对于粗心的读者,请注意,我不是问如何在运行时以编程方式确定此信息。我想坐在我的办公桌前做这件事

一般来说,这里实际上不可能有一个清晰的答案。虽然“更大”的指令集扩展SSE、SSE2、…、AVX往往是递增的,因为一旦添加它们,它们就不会消失,但AESNI也会想到许多更小的ISA扩展,就像英特尔视为可选的TSX一样;在最初添加这些功能之后,一个系列中的单个处理器可能会包括或排除该功能,具体取决于您支付的费用

以埃斯尼为例;这些指令是在Westmile/Clarkdale/Arrandale中添加的,但只有i5和i7变体具有IIRC,它们在某些i5 SKU中也被禁用。在下一代Sandybridge中,它们又是i5和i7,根据维基百科的说法,它们有时在BIOS中也被禁用。在Ivybridge,除了一两个高端i3 SKU之外,它们仍然是i5/i7

因此,尽管人们可以对SSE、SSE2……做出广泛的陈述,SSE4.x、AVX、AVX2对于迄今为止所有出厂的CPU来说“基本上”都是正确的,甚至是正确的,唯一真正正确的答案是通过查看英特尔建议的适当功能位来检查指令在运行时是否可用。这正是你不想要的答案。对不起


对于“我如何大致回答这个问题”这个更一般的问题,维基百科是一个很好的参考。对于特定的处理器型号而不是系列,请使用。

事实上,您已经有了答案:找到此类信息的最佳资源是CPU制造商的文档

如果仔细阅读,您几乎链接到的《英特尔手册》中包含了示例FISTTP所需的所有信息:它被明确列为SSE3指令。请参阅《英特尔64和IA-32体系结构软件开发人员手册》第1卷第5.7.1节,2013年6月。这意味着任何支持SSE3指令集的CPU都应该支持FISTTP

就现代指令集而言,SSE、AVX、BMI等等,只要你能说出来,《英特尔手册》在详细说明任何指令所属的指令集和相关CPUID功能标志方面做得很好,几乎可以追溯到80486 CPU后期引入CPUID时的指令。有了这些信息,就很容易确定哪种CPU型号支持给定的指令


我不确定英特尔手册在计算486之前的CPU何时引入了真正古老的东西方面会有多好。我有一本1992年的微软MASM参考手册,详细介绍了这些东西。但是,如果这些信息不是谷歌所能提供的,我会感到惊讶——不管怎样,这些非常古老的变化,比如在386上引入BT指令,现在可能仅仅从学术角度来看是有趣的。

我使用维基百科。例如,对于fisttp,我会看看维基百科上关于SSE3的文章,它有一个非常方便的支持SSE3的处理器列表。并不总是很好用。对于不属于明显的指令集扩展的指令,有时works@harold啊,胡说八道。维基百科!最重要的是!我也应该去那里看看。但我仍然想知道在维基百科时代之前人们做了什么。。。这也是一个很好的地方,因为其他资源已经存在很长时间了。例如,masm32包含一个文档,该文档列出了所有指令以及支持这些指令的型号,但仅限于和
包括80486。也有这样的信息,并且已经存在了相当长的时间。当然,有些汇编程序有.386和.486这样的指令,你可以告诉汇编程序只允许在某个模型上使用指令。太好了……这就是我要找的信息!我假设它是按字母顺序排列的,而第1卷只是背景/一般信息。是的,我能在网上找到真正的老东西,但找不到新东西。谢谢这是个好消息。这确实比我想象的要复杂。我接受菲斯的答案,因为它给了我我想要的,尽管你的答案确实指出了局限性,但你的答案仍然非常感谢。