CPUID指令是一個x86和x86-64架構的CPU指令,用于獲取CPU的基本信息
以下是一個簡單的C++代碼示例,展示了如何使用CPUID指令獲取CPU的基本信息:
#include <iostream>
#include <bitset>
#include <cstdint>
void cpuid(uint32_t eax, uint32_t ecx, uint32_t& abcd[4]) {
asm volatile("cpuid"
: "=a"(abcd[0]), "=b"(abcd[1]), "=c"(abcd[2]), "=d"(abcd[3])
: "a"(eax), "c"(ecx));
}
int main() {
uint32_t abcd[4];
cpuid(0, 0, abcd);
std::cout << "CPU vendor: ";
for (unsigned i = 0; i < 3; ++i) {
std::cout << std::bitset<32>(abcd[i]);
}
std::cout << std::endl;
return 0;
}
這個示例中,我們首先定義了一個cpuid
函數,該函數接受EAX和ECX寄存器的值作為參數,并將結果存儲在一個4元素的數組中。然后,我們調用cpuid
函數并傳入EAX和ECX的值,最后打印出CPU供應商的信息。
需要注意的是,這個示例僅展示了如何使用CPUID指令獲取CPU的基本信息。要獲取更多信息,你需要查閱Intel或AMD的開發者手冊,了解不同的EAX和ECX值以及如何解析返回的寄存器值。