如何检查CPU是否支持AES-NI?

3

我正在寻找一个解决方案,如何检查CPU是否支持aes-ni。我需要将这些信息放入我的应用程序中,因此我不需要任何CPU-Z、bash命令或其他东西。 我知道它被视为aes标志。我不知道如何在汇编或C语言中检查它。主要应用程序是用C#编写的,但这并不重要。


相关链接:http://unix.stackexchange.com/questions/14077/how-to-check-that-aes-ni-is-supported-by-my-cpu。在Linux系统中,`/proc/cpuinfo`文件对于C语言和bash脚本都是可用的,但这当然需要一个Unix系统。 - Maarten Bodewes
2个回答

4

这些信息是由cpuid指令返回的。将eax=1传递进去,ecx中的第25位将显示支持情况。有关详细信息,请参见英特尔指令集参考。示例代码:

mov eax, 1
cpuid
test ecx, 1<<25
jz no_aesni

此外,您可以尝试执行它并捕获异常。


谢谢,我就是这么做的。 - s3ven

2

在 Visual C++ 中

static bool GetNNICapability()
{
    unsigned int b;

    __asm
    {
        mov     eax, 1
        cpuid
        mov     b, ecx
    }

    return (b & (1 << 25)) != 0;
}

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