Как проверить поддержку AES-NI с __cpuid? - PullRequest
0 голосов
/ 30 мая 2018

Я ищу способ проверить, поддерживает ли мой процессор инструкции AES-NI.Я обнаружил в Интернете много вещей, которые работали, но многие из них были встроенным ассемблерным кодом, и поскольку я работаю в Microsoft Visual Studio и собираю в x64, это не работает.Visual Studio не поддерживает встроенный ассемблерный код x64, и x64 имеет для меня решающее значение.

Итак, я нашел встроенную функцию __cpuid ().Дело в том, что я не знаю ни слова о сборке / внутреннем использовании и т. Д. (Я просто скопировал код, который нашел)

Так что я здесь, чтобы спросить вас о коде нижеЯ написал самостоятельно, используя фрагменты кода в Интернете.Вывод «AES-Ni поддерживается», но это не значит, что мой код верен и действительно восстанавливает 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");
...