Помогите с CPUID
Добавлено: 26 дек 2015, 19:35
Этот: код работает. Но если EAX присвоить 0 и выполнить CPUID, то в EAX почему то 11. Как защитить эту функцию от исполнения на процессоре, не поддерживающем RDRAND? Компилятор MinGW, среда Code Blocks. Если процессор не поддерживает RDRAND инструкцию, то функция должна вызвать rand() и вернуть её значение.
Код: Выделить всё
unsigned long long int IntellRandom ()
{
unsigned long long int Result;
asm (
"PUSH %%RAX\n\
MOV $0, %%RAX\n\
RDRAND %%RAX\n\
MOV %%RAX, %0\n\
POP %%RAX":: "m"(Result)
);
return Result;
}