CPUID

CPUID (CPU Identification) - assembler instruktion mnemonic for x86-processorer , bruges til at indhente oplysninger om processoren. Ved at bruge det kan programmet bestemme typen af ​​processor og dens muligheder (for eksempel kan det bestemme, hvilke instruktionssætudvidelser der understøttes).

CPUID-instruktionen dukkede først op i i486- processorerne . Så var det inkluderet i alle processorer, startende med Intel 486DX / SX / DX2 SL, AMD 486DX4 , Cyrix 6x86 (M1), UMC U5S .

Driftskode :. 0F A2_

Kontrollerer CPUID-instruktionsunderstøttelse af processoren

Da CPUID-instruktionen ikke var til stede i de første x86-processorer , bør du sikre dig, at processoren understøtter den, før du bruger den. For at gøre dette forsøges at ændre bit 21 (ID) i EFLAGS-registeret . Hvis biten ændres med succes, er CPUID-instruktionen tilgængelig.

Kildekode til kontrol:

pushfd ; placere EFLAGS-registret på stable pop eax ; udtræk af værdien af ​​EFLAGS i EAX mov ebx , eax ; gem værdi i EBX xor eax , 200000 h ; skift bit 21 push eax ; placere en ny værdi på stakken popfd ; gem ny værdi i EFLAGS pushfd ; placere EFLAGS på stakken igen pop eax ; EFLAGS værdi er nu i EAX xor eax , ebx ; check bit 21 je no_cpuid ; hvis det ikke er ændret, understøttes CPUID ikke

Dette eksempel bruger 32-bit instruktioner, så hvis processoren er i 16-bit tilstand, anbefales det, at du først tjekker, om processoren understøtter sådanne instruktioner (det vil sige, hvis koden kører på en 80386 eller nyere processor).

Brug

CPUID-instruktionen bruger indholdet af EAX-registret til at bestemme, hvilken slags processorinformation der skal returneres. Første gang skal den kaldes med værdien EAX = 0. Dette vil returnere den maksimalt tilladte værdi af instruktionsparameteren, der understøttes af denne processor.

For at få information om yderligere funktioner, der er tilgængelige i processorer, skal bit 31 sættes i EAX-registeret før CPUID kaldes. For at bestemme den maksimalt tilladte parameterværdi for yderligere funktioner er det for eksempel nødvendigt at udføre CPUID med værdien EAX = 80000000 t .

Når EAX = 0, returnerer processoren processorproducentens identifikator ( leverandør-id ) som 12 ASCII-tegn i EBX-, EDX-, ECX-registrene (i den rækkefølge) .  I EAX-registeret returneres den maksimalt tilladte EAX-værdi, når CPUID kaldes.

Nogle processorproducent-id'er: [1]

ASCII streng HEX -værdier EBX:EDX:ECX Fabrikant
Ægte Intel 756E6547:49656E69:6C65746E Intel
AutentiskAMD 68747541:69746E65:444D4163 AMD
Cyrix i stedet 69727943:736E4978:64616574 Cyrix
CentaurHauls 746E6543:48727561:736C7561 kentaur
SiS SiS SiS 20536953:20536953:20536953 SiS
NexGenDriven 4778654E:72446E65:6E657669 NexGen
Ægte TMx86 756E6547:54656E69:3638784D Transmeta
RiseRiseRise 65736952:65736952:65736952 Stig op
UMC UMC UMC 20434D55:20434D55:20434D55 UMC
Geode af NSC 646F6547:79622065:43534E20 National Semiconductor
Vortex86 SoC 74726F56:36387865:436F5320 DM&P Electronics

Se også

Noter

  1. Tasit Murki, Stanislav Garmatyuk. VIA Nano som et Explorer's Tool . iXBT (11. august 2010). Hentet 16. september 2010. Arkiveret fra originalen 15. august 2010.

Links