cpuid
是一個 x86 和 x86-64 架構上的 CPU 指令,用于獲取 CPU 的信息
__cpuid
內部函數。__get_cpuid
內部函數。cpuid
指令。以下是一個簡單的示例,展示了如何在不同平臺上使用 C++ 和內部函數調用 cpuid
指令:
#include<iostream>
#include <cstdint>
#ifdef _WIN32
#include <intrin.h>
#else
#include <cpuid.h>
#endif
void cpuid(uint32_t leaf, uint32_t subleaf, uint32_t& eax, uint32_t& ebx, uint32_t& ecx, uint32_t& edx) {
#ifdef _WIN32
int regs[4];
__cpuidex(regs, leaf, subleaf);
eax = regs[0];
ebx = regs[1];
ecx = regs[2];
edx = regs[3];
#else
unsigned int a, b, c, d;
__get_cpuid_count(leaf, subleaf, &a, &b, &c, &d);
eax = a;
ebx = b;
ecx = c;
edx = d;
#endif
}
int main() {
uint32_t eax, ebx, ecx, edx;
cpuid(0, 0, eax, ebx, ecx, edx);
std::cout << "Maximum supported CPUID leaf: " << eax<< std::endl;
return 0;
}
這個示例首先根據平臺選擇適當的頭文件和內部函數。然后,定義一個名為 cpuid
的函數,該函數接受 leaf
和 subleaf
參數,并返回 eax
、ebx
、ecx
和 edx
寄存器的值。最后,main
函數調用 cpuid
函數并輸出最大支持的 CPUID 葉子。
請注意,這個示例僅適用于 x86 和 x86-64 架構。在其他架構上,可能需要使用不同的方法來獲取 CPU 信息。