cpuid
是一個 x86 和 x86-64 指令集中的一條指令,它用于獲取 CPU 的信息
以下是一個簡單的示例,展示了如何使用 cpuid
指令來獲取 CPU 的基本信息:
#include<iostream>
#include <bitset>
#include<vector>
#include<string>
void cpuid(int32_t output[4], int32_t function_id) {
__asm__ volatile("cpuid"
: "=a"(output[0]), "=b"(output[1]), "=c"(output[2]), "=d"(output[3])
: "a"(function_id));
}
std::string get_vendor_id() {
int32_t cpu_info[4] = {-1};
cpuid(cpu_info, 0);
return std::string(reinterpret_cast<char*>(&cpu_info[1]), 12);
}
int main() {
std::cout << "CPU Vendor ID: "<< get_vendor_id()<< std::endl;
return 0;
}
在這個示例中,我們定義了一個名為 cpuid
的函數,它接受一個用于存儲輸出結果的數組和一個表示要查詢的功能 ID 的參數。然后,我們使用內聯匯編語言調用 cpuid
指令,并將結果存儲在數組中。
接下來,我們定義了一個名為 get_vendor_id
的函數,它調用 cpuid
函數并傳入功能 ID 0。這將返回 CPU 的供應商 ID,我們將其轉換為字符串并返回。
最后,在 main
函數中,我們調用 get_vendor_id
函數并打印結果。
請注意,這個示例僅適用于 x86 和 x86-64 架構的處理器。在其他架構上,您需要使用相應的指令或庫函數來獲取 CPU 信息。