我正在寻找一种方法来检查我的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");发布于 2021-01-05 03:26:00
AES位在ECX (第25位)中,因此您应该使用cpuInfo2。
https://stackoverflow.com/questions/50609654
复制相似问题