Как вызвать лист CPUID 7 и подлист 0?

Я скачал и установил yum install cpuid на Fedora. Не могли бы вы сообщить мне, как я могу вызвать CPUID leaf 7 и subleaf 0? Я хотел проверить некоторые функции, доступные на этой платформе. Я действительно ценю твою помощь. Заранее спасибо.


person user2142122    schedule 07.03.2013    source источник


Ответы (1)


_cpuid_count можно использовать для получения функции 7 и 0xD с подлистом.

Определение находится в cpuid.h

#define __cpuid_count(level, count, a, b, c, d)
    __asm__ ("cpuid\n\t"
             : "=a" (a), "=b" (b), "=c" (c), "=d" (d)
             : "0" (level), "2" (count))

Обратите внимание, что _cpuid_count не проверяет, поддерживается ли функция. Вы можете сделать проверку, аналогичную __get_cpuid в cpuid.h. Это, вероятно, следует добавить в библиотеки stdc.

static __inline int
__get_cpuid_count (unsigned int __level, unsigned int __count,
           unsigned int *__eax, unsigned int *__ebx,
           unsigned int *__ecx, unsigned int *__edx)
{
    unsigned int __ext = __level & 0x80000000;
    if (__get_cpuid_max (__ext, 0) < __level)
        return 0;

    __cpuid_count (__level, __count, *__eax, *__ebx, *__ecx, *__edx);
    return 1;
}
person Norm    schedule 02.06.2013
comment
Похоже, вы можете использовать __get_cpuid_max вместо этого. __get_cpuid_max выполняет необходимые проверки, чтобы убедиться, что функция/лист доступна. - person jww; 22.03.2018