先贴上自己糊弄的代码(32位系统下编译):用来在32位系统中读取CPUID指令的各种信息。

cpuid的详细信息请参考64-ia-32-architectures-software-developer-manual-325462,从689页开始

32位下嵌入汇编可以使用_asm{…}格式(汇编语句后面不用加分号)

**************************************************************************************************************************************************

#include

void __cpuidex( int *CPUInfo, int InfoType, int ECXValue )// 在32位下模拟__cpuidex函数, 64位VS不支持嵌套汇编

{

if( NULL == CPUInfo )  return;

_asm{

mov edi, CPUInfo    //将数组地址保存在寄存器edi

mov eax, InfoType   //输入功能号

mov ecx, ECXValue  //输入子功能号

cpuid                        //执行cpuid指令

mov [edi], eax          //返回寄存器的值

mov [edi+4], ebx

mov [edi+8], ecx

mov [edi+12], edx

}

}

int main(void) {

int dwBuf[4] = {0};// EAX  EBX  ECX  EDX output

int eax_value; // EAX input/output

int ecx_value; // ECX input/output

unsigned int flag = 1;// loop control

unsigned int count; // The count of array

unsigned int checkSpecial[] = { 0x0D, 0x0F, 0x10, 0x14 }; // special value of EAX

while (flag){

printf("\nPlease enter a value as EAX input: ");

scanf_s("%X", &eax_value); // assign eax_value

if (((eax_value >= 0x00) && (eax_value <= 0x16)) || ((eax_value >= 0x80000000) && (eax_value <= 0x80000008))) { // Limit of eax_value

for (count = 0; count < 4; count++){

if (eax_value == checkSpecial[count]){// check special value

printf("Please enter a value as ECX input: ");

scanf_s("%X", &ecx_value);    //assign ecx_value

}

}

__cpuidex( dwBuf, eax_value, ecx_value);

printf("EAX: %8X", dwBuf[0]);

printf("\nEBX: %8X", dwBuf[1]);

printf("\nECX: %8X", dwBuf[2]);

printf("\nEDX: %8X", dwBuf[3]);

}

else

printf("\nInput EAX value invalid !!! \n");

if(eax_value == -1){

flag = 0;

}

}

return 0;

}

***********************************************************************************************************************************************************************************************

void __cpuidex(

int cpuInfo[4],

int function_id,

int subfunction_id

);

请注意:第一参数int cpuInfo[4] 是指针!是指针!是指针!用于接收eax, ebx, ecx, edx的返回值

function_id即eax的输入值, subfunction_id即ecx的输入值

这个库函数放在头文件intrin.h里边



cpuid limit,cpuid function相关推荐

  1. Limit CPUID MAX

    Limit CPUID MAX to 3.是指出现在英特尔平台的BIOS设置选项.很多主板也显示成CPUID maximum value limit选项.中文意义是:限制执行CPUID指令返回数值大于 ...

  2. CPUID — CPU Identification

    CPUID- CPU Identificationhttps://www.felixcloutier.com/x86/cpuid 目录 CPUID - CPU Identification Instr ...

  3. Intel处理器CPUID指令学习

    前文<Intel处理器Family.Model.Stepping等的学习>只是简单讲了CPU的标识等内容(仅针对Intel,本文也是),但其读取方法未涉及.本文就此未完事宜来了解读取的方法 ...

  4. 通过CPUID指令读取处理器信息

    一.CPUID简介 CPUID操作码是一个面向x86架构的处理器补充指令,它的名称派生自CPU识别,作用是允许软件通过CPUID指令读取处理器的详细信息. 二.CPUID基本原理 CPUID有很多fu ...

  5. 获取硬件信息的delphi源码(CPUID、操作系统、Mac物理地址、计算机名称、IP地址、用户名)

    转载请保留本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/8545673 {----------------------------- ...

  6. arm linux读cpu id,基于ARM架构的芯片获取CPU信息(cpuID)的多种方法

    由于工作的原因,要获取到ARM芯片的cpuid. 了解下存储cpu信息的寄存器内容: CPUID寄存器内容: 字段名:Implementer(venter 销售ID)|Variant(大版本号) | ...

  7. 【Optimizaition/x86】Intel CPU的CPUID指令获取的C实现

    Date: 2018.7.22 1.参考: https://www.cnblogs.com/DxSoft/articles/5053954.html https://blog.csdn.net/lis ...

  8. linux cpuid指令,通过CPUID指令获取CPU信息

    1.简介 在计算机领域中需要用到CPU信息的地方有很多.比如,在可信计算中,需要收集终端的软硬件的完整性信息,其中就包含CPU的信息:再比如,一些加密软件需要绑定CPU的某些信息,去生成加密密钥.本文 ...

  9. Intel CPU的CPUID指令

    Intel有一个超过100页的文档,专门介绍cpuid这条指令,可见这条指令涉及内容的丰富. 记得去年的时候,曾经有个"英布之剑"问过我这条指令,当时并没有给出一个满意的回答,现在 ...

最新文章

  1. 免费公开课 | 基于定制数据流技术的AI计算加速
  2. iOS学习之iOS沙盒(sandbox)机制和文件操作(二)
  3. 一个nuxt(vue)+mongoose全栈项目聊聊我粗浅的项目架构
  4. [渝粤教育] 西南科技大学 建筑制图 在线考试复习资料(1)
  5. 《Python数据分析》第二版.第三章.[学习笔记][Jupyter notebook]
  6. 含有Date类型的对象或集合转换成json时的问题
  7. web安全day11:进一步学习windows域的gpo
  8. 6.业务架构·应用架构·数据架构实战 --- 双轮驱动的技术架构设计
  9. 全卷机神经网络图像分割(U-net)-keras实现
  10. OPNET出错集锦:)
  11. Unity 接入有道智云AI - 文本翻译
  12. 轻量级web api_API接口管理,这15种开源工具助你管理API
  13. 【2023王道数据结构】【树与二叉树】通过C++实现中序遍历的非递归算法(手动入出栈)C、C++完整实现(可直接运行
  14. 初次面试初生牛犊不怕虎,居然觉得面试就是聊天?
  15. oracle迁移到人大金仓,Oracle迁移数据到人大金仓V8
  16. 微信网页/微信小程序内实现长按识别二维码
  17. hadoop 集群txid不一致
  18. 排位赛[USACO20JAN]Loan Repayment(二分+数学)
  19. 第六章—身份认证、第七章—控制访问
  20. 微信小程序 - 无法获取云端数据库中的数据的问题(修改云端数据库权限)

热门文章

  1. 一百一十三、SAP的SCAT录屏操作,类似按键精灵可用于批量修改数据
  2. html5画布星空,HTML5 Canvas星空|星域背景图生成器
  3. 几种室内定位技术的简要介绍
  4. 利用Scrapy框架爬取LOL皮肤站高清壁纸
  5. 西安二本理科大学计算机专业排名,二本理科大学排名及分数线
  6. 【医学+深度论文:F18】2019 Robust optic disc and cup segmentation with deep learning for glaucoma detection
  7. 第012天:Material Design界面设计语言
  8. OpenCV是什么?OpenCV是干什么的?OpenCV概述
  9. system verilog 三段式状态机和interface
  10. 机器学习课程 Variational Inference