Chinaunix首页 | 论坛 | 博客
  • 博客访问: 192020
  • 博文数量: 45
  • 博客积分: 1456
  • 博客等级: 上尉
  • 技术积分: 535
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-21 17:47
文章分类
文章存档

2012年(1)

2009年(43)

2008年(1)

我的朋友

分类: LINUX

2009-03-23 09:52:19

CPUID指令
 1. CPUID指令代码: 0a20f
   例:
   {
     CPUID MACRO
          dw 0a20fh
     ENDM
   }
 2. CPUID有效检测
     如果程序可以改变EFLAGE(扩展标志字)的第21位,那么CPUID有效,
     否则无效。
     注:对于Cyrix的CPU,在打开其内部CPUID标志位之前,用此方法检测
     无效。
    例:
     {
      ...
      pushfd
      pop eax            
      mov ecx,eax
      xor eax,200000h    ;强制扩展标志位第21位为1
      push eax
      popfd
      pushfd
      pop eax
      xor eax,ecx        ;如果扩展标志位的第21位为1,那么
      je no_cpuid        ;CPUID存在,否则不存在
      jmp have_cpuid
      ...
    }
 3. CPUID指令
   (1)基本指令
     1.第0号功能: (EAX=0)
     调用寄存器:
       EAX=0
     返回寄存器:
      EAX=最大功能号
      EBX:EDX:ECX=CPU厂商识别串
     例:
     {
      ...
      xor eax,eax        ;调用0号功能
      CPUID              ;执行CPUID指令
      cmp ebx,"Genu"     ;判断EBX:EDX:ECX是否为"GenuineIntel"
      jne no_intel       ;如果是则该CPU的厂商为Intel,否则则不是
      cmp edx,"ineI"
      jne no_intel
      cmp ecx,"ntel"
      jne no_intel
      jmp is_intel
      ...
     }


     2.第1号功能: (EAX=1)
     调用寄存器
      EAX=1
     返回寄存器
      EAX=CPU说明
       CPU说明(见附录1)
       {
         bit     内容
        0--3     节率 (stepping)
        4--7     型号 (model)
        8--11    家族 (family)
       }
      EDX=特征标志字
      {
        bit      内容                                 缩写
         0       FPU On-chip                          FPU
         1       Virtual Mode Extension               VME
         2       Debugging Extension                  DE
         3       Page Size Extension                  PSE
         4       Time Stamp Counter                   TSC
         5       RDMSR/WRMSR Instructions
         6       Physical Address Extension           PAE
         7       Machine Check Exception              MCE
         8       CMPXCHG8B Instruction
         9       On-chip APIC HardWare
         10      Undefined
         11      SYSENTER/SYSEXIT Instructions
         12      Memory Type Range Registers
         13      Page Global Enable                   PGE
         14      Machine Check Architecture           MCA
         15      Conditional Move Instruction         CMI
         16      Page Attribute Table                 PAT
         17--22  Undefined
         23      MMX Instructions                     MMX
         24      internet Streaming SIMD Extensions   SSE
         25--31  Undefined
       }

   (2)扩展指令
      1.第80000000号功能(EAX=80000000h)
        调用寄存器:
        EAX=80000000h
        返回寄存器:
        EBX,ECX,EDX=保留
        EAX=最大功能号

      2.第80000001号功能
        调用寄存器:
        EAX=80000001h
        返回寄存器:
        EAX=CPU说明(见第1号功能)
        EDX=扩展特征标志字
        {
          EDX[0] <- FPU: FPU on Chip
EDX[1] <- VME: Virtual Mode Extention present
EDX[2] <- DE: Debbuging Extentions
EDX[3] <- PSE: CPU support 4MB size pages
EDX[4] <- TSC: TSC present (See RDTSC command)
EDX[5] <- MSR: CPU have K5 Compatible MSRs
EDX[6] <- 0 (Reserved)
EDX[7] <- MCE: Machine Check exception
EDX[8] <- CX8: Support CMPXCHG8B instruction
EDX[9] <- Reserved
EDX[10]<- Support SYSCALL and SYSRET instruction (!!!)
EDX[11,12]<- reserved
EDX[13]<- PGE: Page Global Feature support
EDX[14]<- reserved
EDX[15]<- CMOV: CPU support CMOV instruction
EDX[16]<- FCMOV: CPU support FP. FCMOV (!!!)
EDX[22..16] <- Reserved
EDX[23] <- MMX: CPU support IA MMX
EDX[24] <- (Cyrix) Cyrix Extended MMX
EDX[30..24] <- Reserved
EDX[31] <- AMD 3DNow!
}
(附录1)各类CPU参数
1. Cyrix
厂商识别串: "CyrixInstead"
CPU名称 家族 型号
MediaGX 4 4
6x86 5 2 (特征标志字=0x1)
6x86L 5 2 (特征标志字=0x105)
GXm 5 4
6x86MX 6 0

2. NexGen
厂商识别串: "NexGenDriven"
CPU名称 家族 型号
Nx586 5

3. UMC
厂商识别串: "UMC UMC UMC "
CPU名称 家族 型号
U5D 4 1
U5S 4 2

4. AMD
厂商识别串: "AuthenticAMD"
CPU名称       家族      型号
486DX2WT      4        3
486DX2WB      4        7
486DX4WT      4        8
486DX4WB      4        9
5x86WT        4       0x0e
5x86WB        4       0x0f
486           4       Others
K5/SS         5        0
K5            5      1,2,3
K6            5       6,7
K6-2          5        8
K6-III        5        9
K5/K6         5      Others
K7工程样本     6        0
K7            6      Others

5. IDT
厂商识别串: "CentaurHauls"
CPU名称       家族      型号
WinChip C6    5        4
WinChip 2     5        8

6 Rise
厂商识别串: "RiseRiseRise"
CPU名称       家族      型号
mP6           5        0

7. Intel
厂商识别串: "GenuineIntel"
CPU名称       家族      型号
PentiumII     6        3
Celeron       6        5
CeleronA      6        6
PentiumIII    6        7
PentiumPro OverDrive P6   6        1
PentiumPro 6    Others
PentiumP5     5        1
PentiumP54C   5        2
Pentiumi486   5        3
PentiumMMX    5        4
PentiumDX4    5        5
Pentium OverDrive P5      5        6
Pentium 5      Others
486DX         4        0,1
486SX         4        2
486DX2        4        3
486SL         4        4
486SX2        4        5
486DX2_WB     4        7
486DX4        4        8
阅读(1489) | 评论(0) | 转发(0) |
0

上一篇:wget断点续传

下一篇:yum只下载,不安装

给主人留下些什么吧!~~