【发布时间】:2013-03-07 16:42:02
【问题描述】:
我已经在 fedora 上下载并安装了 yum install cpuid。 你能告诉我如何调用 CPUID 叶 7 和 subleaf 0 吗?我想检查该平台上可用的一些功能。 我真的很感谢你的帮助。提前致谢。
【问题讨论】:
标签: cpuid
我已经在 fedora 上下载并安装了 yum install cpuid。 你能告诉我如何调用 CPUID 叶 7 和 subleaf 0 吗?我想检查该平台上可用的一些功能。 我真的很感谢你的帮助。提前致谢。
【问题讨论】:
标签: cpuid
_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 不检查该功能是否受支持。 您可以在 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;
}
【讨论】:
__get_cpuid_max。 __get_cpuid_max 执行必要的检查以确保函数/叶子可用。
__level & 0x80000000?这对我来说看起来不对。