确定处理器支持哪些指令

3

CPU-Z 能够确定你的处理器支持哪些指令。例如下面的链接展示了这些指令:

MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、EM64T

有没有一种方法可以使用 .NETWMI 或其他技术来实现这一点?


2
不是本地的。可能会通过WMI公开一些内容。 - user166390
1
这个问题与[c#]标签完全没有任何关系。使用精细指令需要编写汇编语言。Jitter会为您编写它,这是您无法控制的。 - Hans Passant
1
@HansPassant 我认为加上C#标签是有意义的 - 发帖人正在寻找使用C#/.NET实现此目的的方法。我今年早些时候实际上也有类似的需求(尽管最终我用汇编语言编写了解决方案)。有可能有人开发了一个托管库来提供这个功能。 - xxbbcc
1个回答

6
kernel32.dll 中有一个名为IsProcessorFeaturePresent的函数,您可以使用pInvoke调用。

编辑
关于EM64T扩展指令集,这仅适用于x64平台,因此您可以通过WMI检查当前CPU类型:

public static bool IsEM64TSupported()
{
  ManagementObject mo;
  mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'");
  ushort i = (ushort) mo["Architecture"];

  return i == 9;
}

但由于32位操作系统中不存在EM64T指令,因此您也需要检查一下。


使用您发送给我的pInvoke链接 - 我无法找到EM64T。 - Aducci
@Aducci,这可能是因为该网站是自动生成的(看起来像是旧版MSDN网站)。从我所知道的来看,pInvoke是C++代码的PowerShell包装器。该脚本位于http://poshcode.org/1409。更多详细信息可以在此处找到:http://www.leeholmes.com/blog/2009/01/19/powershell-pinvoke-walkthrough/。 - dragon788
1
@dragon788:嗯...不是的...pInvoke是在托管代码中执行非托管函数的方法。 - Sani Huttunen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接