我的中央处理器是英特尔Core2Quad Q9300 2.5 the。尝试在EAX=1中使用cpuid指令编写x86程序集时,得到的结果是AL中的值为00000010(我认为它应该是01110111)。
有帮手吗?
发布于 2013-01-25 14:21:21
可悲的是(由于大量的失败)英特尔的“家族”数字从5(奔腾)到6(奔腾Pro、奔腾II、奔腾II)到15 (奔腾4),然后又回到了6(奔腾M、原子、酷睿、Core2、尼海伦、桑迪桥等)。
这主要意味着(就其本身而言) " family“字段对于确定CPU的系列是无用的。相反,如果"family = 6",则必须使用型号来确定系列(并且型号不是合理的顺序或任何东西-例如,型号8、10和11是奔腾III,而型号9的中间是奔腾M)。
还要注意的是,型号最初是4位(在EAX中是第4位到第7位),这不足以处理Intel的“一切都是家族6”的愚蠢之处,所以他们后来又用4位扩展了型号(在EAX中是第16位到第19位)。这意味着要获得完整的型号,你需要做一些小调整(例如model = ( (EAX >> 4) & 0x0F) | ( (EAX >> 12) & 0xF0);)。
例如,对于模型23,EAX中的值将是0x?1??7?,而较旧的软件(在引入“模型号扩展”之前设计)会错误地认为CPU是“模型7”,而事实并非如此。
我假设您已经执行了相同的操作(忘记在型号中包含“扩展型号”);并且您的实际CPU的详细信息是"family = 6,model = 23“。这将使它成为核心2 (Penryn)。
https://stackoverflow.com/questions/14515608
复制相似问题