我正在寻找一种方法来检查我的CPU是否支持AES-NI指令。我在互联网上发现了很多东西,但它们很多都是内联汇编代码,因为我在Microsoft Visual Studio下,而且我在x64中进行编译,这是行不通的。 Visual Studio不支持x64内联汇编代码,x64对我来说至关重要。
所以我找到了内在函数__cpuid()。问题是我不知道汇编/内在使用等等......(我只是复制粘贴我发现的代码)
所以我在这里向您询问下面我使用互联网代码编写的代码。输出是“支持AES-Ni”,但这并不意味着我的代码是正确的,并且真正检索到我的CPU的AES-NI容量。
int cpuInfo[4] = { -1 };
__cpuid(cpuInfo, 1);
_Bool returned = ((cpuInfo[3] & 0x2000000) != 0);
if (returned == 1)
printf("AES-NI supported");
else
printf("AES-NI not-supported");
答案 0 :(得分:0)
AES 位在 ECX(第 25 位)中,因此您应该使用 cpuInfo[2]。