CPUID (CPU Identification) - Assembler - käskymuistomerkki x86 - prosessoreille , jota käytetään hankkimaan tietoja prosessorista. Sen avulla ohjelma voi määrittää prosessorin tyypin ja sen ominaisuudet (se voi esimerkiksi määrittää, mitä käskysarjalaajennuksia tuetaan).
CPUID - käsky ilmestyi ensimmäisen kerran i486 - prosessoreissa . Sitten se sisällytettiin kaikkiin prosessoreihin alkaen Intel 486DX / SX / DX2 SL, AMD 486DX4 , Cyrix 6x86 (M1), UMC U5S .
Toimintakoodi : 0F A2.
Koska CPUID-ohjetta ei ollut ensimmäisissä x86-prosessoreissa , sinun tulee varmistaa, että prosessori tukee sitä ennen sen käyttöä. Tätä varten yritetään muuttaa EFLAGS-rekisterin bittiä 21 (ID) . Jos bitin muutos onnistuu, CPUID-käsky on käytettävissä.
Tarkistettava lähdekoodi:
pushfd ; EFLAGS-rekisterin sijoittaminen pinoon pop eax ; EFLAGS-arvon erottaminen EAX:ssä mov ebx , eax ; tallenna arvo EBX:ssä xor eax , 200000 h ; vaihda bitti 21 push eax ; uuden arvon asettaminen pinoon popfd ; tallentaa uusi arvo EFLAGS pushfd ; asettamalla EFLAGS pinoon uudelleen pop eax ; EFLAGS-arvo on nyt muodossa EAX xor eax , ebx ; tarkista bitti 21 je no_cpuid ; jos se ei ole muuttunut, CPUID:tä ei tuetaTämä esimerkki käyttää 32-bittisiä ohjeita, joten jos prosessori on 16-bittisessä tilassa, on suositeltavaa tarkistaa ensin, tukeeko prosessori tällaisia ohjeita (eli toimiiko koodi 80386- tai uudemmassa prosessorissa).
CPUID-käsky käyttää EAX-rekisterin sisältöä määrittääkseen, millaisia prosessoritietoja palautetaan. Ensimmäisellä kerralla se tulee kutsua arvolla EAX = 0. Tämä palauttaa tämän prosessorin tukeman käskyparametrin suurimman sallitun arvon.
Jotta saadaan tietoa prosessoreissa käytettävissä olevista lisätoiminnoista, EAX-rekisteriin on asetettava bitti 31 ennen CPUID:n kutsumista. Esimerkiksi lisätoimintojen parametrien suurimman sallitun arvon määrittämiseksi on suoritettava CPUID arvolla EAX = 80000000 h .
Kun EAX = 0, prosessori palauttaa prosessorin valmistajan tunnuksen ( Vendor ID ) 12 ASCII-merkkinä EBX-, EDX-, ECX-rekistereissä (tässä järjestyksessä) . EAX-rekisterissä suurin sallittu EAX-arvo palautetaan, kun CPUID kutsutaan.
Jotkut prosessorin valmistajan tunnisteet: [1]
ASCII-merkkijono | HEX -arvot EBX:EDX:ECX | Valmistaja |
---|---|---|
Aito Intel | 756E6547:49656E69:6C65746E | Intel |
Aito AMD | 68747541:69746E65:444D4163 | AMD |
Cyrix sijaan | 69727943:736E4978:64616574 | Cyrix |
CentaurHauls | 746E6543:48727561:736C7561 | kentauri |
SiS SiS SiS | 20536953:20536953:20536953 | SiS |
NexGenDriven | 4778654E:72446E65:6E657669 | NexGen |
AitoTMx86 | 756E6547:54656E69:3638784D | Transmeta |
RiseRiseRise | 65736952:65736952:65736952 | Nouse |
UMC UMC UMC | 20434D55:20434D55:20434D55 | UMC |
Geode by NSC | 646F6547:79622065:43534E20 | Kansallinen puolijohde |
Vortex86 SoC | 74726F56:36387865:436F5320 | DM&P Electronics |