使用 CPUID 查询 CPU 信息

CPUID指令用于查询CPU相关信息,通过设置EAX寄存器的值并调用CPUID,可以从EBX, ECX, EDX寄存器获取数据。在C++中可以使用__cpuid和__cpuidex函数进行封装。例如,获取CPU型号和生产厂商,通过设置不同的EAX值,读取返回的字符串信息。查阅相关文档,如Intel的资料和MSDN,可以了解更多关于CPUID的使用。" 96979811,7506600,Swing窗口图形最小化不消失技巧,"['Java', 'GUI', 'Swing', '图形绘制', '事件处理']
摘要由CSDN通过智能技术生成

cpuid 是用来查询 CPU 相关信息的指令。其大致使用方式为:

  1. eax(有时会涉及 ecx)放入指定的值
  2. 使用 cpuid
  3. 在指定寄存器中取值

在 Visual C++ 以及 GCC 中,都有对应的 CPUIDintrin

#if defined(_MSC_VER)
#include <intrin.h>
#elif defined(__GNUC__)
#include <cpuid.h>
#endif // _MSC_VER

利用这些 intrin 我们就无需手写汇编来使用 cpuid。为了方便使用,可以将其封装一下:

void CpuInfo::RunCpuID(std::int32_t eax, std::int32_t ecx, std::int32_t(&abcd)[4]) noexcept
{
    static_assert(std::is_same<std::int32_t, int>::value, "int & int32_t must be the same!");
    std::int32_t* 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值