3

我正在寻找解决方案,如何检查CPU 上的 aes-ni是否可用。我需要把这些信息放在我的应用程序中,所以我不是在寻找任何 CPU-Z、bash 命令或其他东西。我知道它被视为aes标志。我不知道如何在汇编或 c 中检查它。主应用程序是用 C# 编写的,但这并不重要。

4

2 回答 2

4

该信息由cpuid指令返回。传入eax=1并输入第 25 位ecx将显示支持。有关详细信息,请参阅 intel 指令集参考。示例代码:

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

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

于 2014-11-28T18:26:17.727 回答
2

在视觉 C++ 中

static bool GetNNICapability()
{
    unsigned int b;

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

    return (b & (1 << 25)) != 0;
}
于 2016-03-31T22:24:01.240 回答