【问题标题】:Determine which instructions are supported by the processor确定处理器支持哪些指令
【发布时间】:2012-10-31 19:09:51
【问题描述】:

CPU-Z 能够确定您的处理器支持的指令。例如,以下链接显示了这些说明:

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

有没有办法使用.NETWMI 或其他技术来实现这一点?

【问题讨论】:

  • 不是本地的。可能有一些东西通过 WMI 暴露出来。
  • 这个问题对于 [c#] 标签完全没有意义。使用精品说明需要编写汇编。抖动会为你写出来,这是你无法控制的。
  • @HansPassant 我认为拥有 C# 标签是有意义的——发帖人正在寻找一种使用 C#/.NET 实现这一目标的方法。今年早些时候我实际上也有类似的需求(尽管我最终在汇编中编写了解决方案)。有人开发了提供此功能的托管库并非不可能。

标签: c# .net wmi


【解决方案1】:

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;
}

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

【讨论】:

  • 使用您发送给我的 pInvoke 链接 - 我无法找到 EM64T
  • @Aducci 这可能是因为该站点是自动生成的(它看起来像是来自旧版本的 MSDN 站点)。据我所知,pInvoke 是 C++ 代码的 PowerShell 包装器。该脚本位于 poshcode.org/1409 。更多细节可以在这里找到,leeholmes.com/blog/2009/01/19/powershell-pinvoke-walkthrough
  • @dragon788: 嗯...不... pInvoke 是一种在托管代码中执行非托管函数的方法。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 2020-06-05
  • 2018-08-15
  • 1970-01-01
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
相关资源
最近更新 更多