如何调用CPUID leaf 7和subleaf 0?

时间:2013-03-07 16:42:02

标签: cpuid

我已经在fedora上下载并安装了yum install cpuid。 能不能让我知道如何拨打CPUID leaf 7和subleaf 0?我想检查该平台上的一些可用功能。 我非常感谢你的帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

_cpuid_count可用于通过subleaf获取函数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不会检查是否支持该功能。 您可以在cpuid.h中进行类似于__get_cpuid的检查。这应该可以添加到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;
}