在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的特性,例如型號、功能支持等。