在 Linux 中,可以使用庫函數 CPUID
來獲取 CPU 的信息
首先,確保已經安裝了 libcpuid
庫。如果沒有安裝,可以使用以下命令安裝:
sudo apt-get install libcpuid-dev
接下來,創建一個名為 cpuid.c
的文件,并在其中編寫以下代碼:
#include <stdio.h>
#include <stdint.h>
#include <cpuid.h>
void print_cpuid(uint32_t eax, uint32_t ebx, uint32_t ecx, uint32_t edx) {
printf("CPUID: EAX = 0x%x, EBX = 0x%x, ECX = 0x%x, EDX = 0x%x\n", eax, ebx, ecx, edx);
}
int main() {
uint32_t eax, ebx, ecx, edx;
// 獲取 CPUID 信息
__asm__ __volatile__(
"cpuid"
: "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx)
: /* No inputs */
: "eax", "ebx", "ecx", "edx"
);
// 打印 CPUID 信息
print_cpuid(eax, ebx, ecx, edx);
return 0;
}
在這個示例中,我們使用內聯匯編(__asm__
)來調用 cpuid
指令,并將結果存儲在 eax
、ebx
、ecx
和 edx
寄存器中。然后,我們定義了一個 print_cpuid
函數來打印這些寄存器的值。
要編譯這個程序,請在終端中運行以下命令:
gcc -o cpuid cpuid.c -lcpuid
這將生成一個名為 cpuinfo
的可執行文件?,F在,你可以運行這個程序來獲取 CPU 的信息:
./cpuinfo
輸出將類似于以下內容:
CPUID: EAX = 0x12345678, EBX = 0x87654321, ECX = 0xabcdef12, EDX = 0x34567890
這就是如何在 Linux 中使用庫函數 CPUID
獲取 CPU 的信息。