Tag: cpuid

如何检查CPU是否支持SSE3指令集?

以下代码是否有效,以检查CPU是否支持SSE3指令集? 使用IsProcessorFeaturePresent()函数显然在Windows XP上不起作用(请参阅http://msdn.microsoft.com/zh-cn/library/ms724482(v=vs.85).aspx )。 bool CheckSSE3() { int CPUInfo[4] = {-1}; //– Get number of valid info ids __cpuid(CPUInfo, 0); int nIds = CPUInfo[0]; //– Get info for id "1" if (nIds >= 1) { __cpuid(CPUInfo, 1); bool bSSE3NewInstructions = (CPUInfo[2] & 0x1) || false; return bSSE3NewInstructions; } return false; }

C#中x86 / x64 CPUID

与我的另一个问题相关 ,请帮我debugging“未知的模块中发生未处理的typesSystem.AccessViolationException的exception其他信息:尝试读取或写入受保护的内存,这往往表明其他内存已损坏。 通过代码,一切工作,直到del()的实际调用,并在该行失败。 这段代码是基于这篇文章的示例和这个在python中工作的python代码 。 我无法得到代码示例,要么(同样的例外),但我希望这只是一点点过时或什么。 编辑:看看编辑历史,如果你关心我们如何到达这里,这是无趣的。 完成的工作版本: public static class CpuID { public static byte[] Invoke(int level) { IntPtr codePointer = IntPtr.Zero; try { // compile byte[] codeBytes; if (IntPtr.Size == 4) { codeBytes = x86CodeBytes; } else { codeBytes = x64CodeBytes; } codePointer = VirtualAlloc( IntPtr.Zero, new UIntPtr((uint)codeBytes.Length), AllocationType.COMMIT | AllocationType.RESERVE, MemoryProtection.EXECUTE_READWRITE ); […]