CPUID指令介紹

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章