我正在寻找一种方法来检查我的CPU是否支持AES-NI指令。我在互联网上找到了很多有效的东西,但其中很多是内联汇编代码,因为我在 Visual Studio 下Microsoft并且我正在用 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");
AES 位位于 ECX(第 25 位(中,因此您应该使用 cpuInfo[2]。