cpuid
是一個(gè) x86 和 x86-64 指令集中的一條指令,它用于獲取 CPU 的信息
以下是一個(gè)簡單的示例,展示了如何使用 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;
}
在這個(gè)示例中,我們定義了一個(gè)名為 cpuid
的函數(shù),它接受一個(gè)用于存儲(chǔ)輸出結(jié)果的數(shù)組和一個(gè)表示要查詢的功能 ID 的參數(shù)。然后,我們使用內(nèi)聯(lián)匯編語言調(diào)用 cpuid
指令,并將結(jié)果存儲(chǔ)在數(shù)組中。
接下來,我們定義了一個(gè)名為 get_vendor_id
的函數(shù),它調(diào)用 cpuid
函數(shù)并傳入功能 ID 0。這將返回 CPU 的供應(yīng)商 ID,我們將其轉(zhuǎn)換為字符串并返回。
最后,在 main
函數(shù)中,我們調(diào)用 get_vendor_id
函數(shù)并打印結(jié)果。
請(qǐng)注意,這個(gè)示例僅適用于 x86 和 x86-64 架構(gòu)的處理器。在其他架構(gòu)上,您需要使用相應(yīng)的指令或庫函數(shù)來獲取 CPU 信息。