在Linux中,可以通过CPUID
指令来获取CPU的信息
EAX
:寄存器,用于存储不同的CPUID信息。EBX
:寄存器,用于存储从CPUID指令获取的第二个参数。ECX
:寄存器,用于存储从CPUID指令获取的第三个参数。EDX
:寄存器,用于存储从CPUID指令获取的第四个参数。要获取CPUID的值,可以使用内联汇编(inline assembly)或者通过C语言的内建函数__get_cpuid()
。下面是两种方法的示例:
方法1:使用内联汇编
#include <stdio.h>
int main() {
unsigned eax, ebx, ecx, edx;
// 获取CPUID值
__asm__ (
"cpuid"
: "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
: /* No inputs */
: /* No clobbered registers */
);
printf("EAX: %u\n", eax);
printf("EBX: %u\n", ebx);
printf("ECX: %u\n", ecx);
printf("EDX: %u\n", edx);
return 0;
}
方法2:使用__get_cpuid()
函数
#include <stdio.h>
#include <stdint.h>
void __get_cpuid(uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx);
int main() {
uint32_t eax, ebx, ecx, edx;
// 获取CPUID值
__get_cpuid(&eax, &ebx, &ecx, &edx);
printf("EAX: %u\n", eax);
printf("EBX: %u\n", ebx);
printf("ECX: %u\n", ecx);
printf("EDX: %u\n", edx);
return 0;
}
在这两个示例中,我们分别使用内联汇编和__get_cpuid()
函数获取CPUID的值,并将其打印出来。这些值可以帮助您了解CPU的特性,例如型号、功能支持等。