首页
社区
课程
招聘
[原创]科普一下CPUID的正确用法
发表于: 2009-7-8 11:26 8223

[原创]科普一下CPUID的正确用法

2009-7-8 11:26
8223

使用了cpuid指令的程序要想通用的话:

1.判断SPU是否支持cpuid指令
方法:看eflags的第21位(ID位)能否被改变

BOOL __declspec(naked) IsCpuidValid()
{
	__asm
	{
		pushfd
		pop eax             //eax = eflags
		mov ebx, eax
		xor eax, 00200000h  //toggle bit 21, eflags.[ID]
		push eax
		popfd
		pushfd
		pop eax
		cmp eax, ebx
		jz NO_CPUID
		mov eax, 1
		ret
NO_CPUID:
		xor eax, eax
		ret
	}
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
关于function num,Intel貌似是这样处理的:
1.如果num的最高位为0,并且大于允许的max num的话,就和max num是一样的吧;
2.如果num的最高位为1,并且大于允许的max num的话,最高位将被置0,接下来就参照1.
不知道amd是不是也这样的,好像没看到有说明。
2009-7-8 15:07
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
完全看不懂,但是帖子还是要顶的。因为diyhack是个好人。
2009-7-8 22:39
0
雪    币: 1753
活跃值: (870)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
4
呵呵`~
  不错哦~~~感谢了~`
这好解决了  我那个获取 CPU信息代码 的判断`是否对该指令的支持问题~!
2009-7-9 23:49
0
雪    币: 1753
活跃值: (870)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
厉害啊~`
         比我考虑``周到多了~`
当时我只是粗粗的看了下相关的知识``
搞了一个读取CPU信息的东西`
  没考虑到`是否支持CPUID 这个指令~!
2009-7-9 23:57
0
游客
登录 | 注册 方可回帖
返回
//