CPUID
kzaj
CPUID (opcode 0FH,0A2H) jest dostepna od procesorów 586. Aby sprawdzić, czy jest obsługiwana trzeba sprawdzić, czy bit 21 rejestru FLAGS jest modyfikowalny. Proponuję kod asma następujący:
PUSHFD
POP EAX
XOR EAX, 000200000H ;NOTUJEMY FLAGE ID, ZEBY SPRAWDZIC CZY JEST CPUID
PUSH EAX
POPFD
PUSHFD
POP ECX
CMP EAX, ECX
JZ MAMY_CPUID
Jak wiemy, czy CPUID jest obsługiwane, możemy je wykonać. Numer funkcji podajemy w rejestrze EAX. Funkcje są następujące:
Funkcja 0:
Na wyjściu: EAX to maksymalny numer funkcji (opiszę tylko 0 i 1, po prostu nie znam innych :( )
ECX:EBX:EDX - w ASCII nazwa producenta (AuthenticAMD dla AMD, GenuineIntel - Intel, RiseRiseRise - Rise, SiS SiS SiS dla Sis)
Funkcja 1:
EAX - struktura o następującym formacie:
bity 3..0 - wersja procy
bity 7..4 - model
bity 11..8 - rodzina
bity 13..12 - typ procesora (00 - original OEM processor, 01 - OverDrive, 10 - Dual, 11 - zarezerwowane).
bity 15..14 - zarezerwowane
bity 19..16 - rozszerzony model (extended model) - INTEL
bity 27..20 - rozszerzona rodzinal (extended family) - INTEL
bity 31..28 - zarezerwowane
po bitach 11-4 można rozpoznać nzawę procesora. Poszukaj w internecie tabel dla tego, ja mam dawno nieaktualną.
EDX - tablica z obsługiwanymi funkcjami procesora:
0 Floating Point Unit
1 Virtual Mode Extensions
2 Debugging Extensions
3 Page Size Extensions 4MB
4 Time Stamp Counter
5 Model Specific Registers
6
PAE (Physical Address Extension)
7 Machine Check Exception
8 CMPXCHG8B Instruction
9 APIC
11 SYSENTER / SYSEXIT Instruction
12 Memory Type Range Registers
13 Page Global Enable
14 Machine Check Architecture
15 Conditional Move Instruction
16 Page Attribute Table
17 36 bit Page Size Extensions
18 Processor Serial Number
19 CLFLUSH Instruction Supported
21 Debug Store
22 Thermal Monitor and Software Controlled Clock
23 MMX Instruction
24
FXSR (Fast Floating Point SAve and Restore)
25
Streaming SIMD Extensions
26 Streaming SIMD Extensions 2
27
Self Snoop
28
Hyper Threading Technology
29
Thermal Monitor Supported
31
Signal Break on FERR
Dzieki cpuid mozna zrobic program ktory uruchomi sie tylko na Intelu.
Thanks for this, but I still have a hard time understanding everything.
Through this post, I know that your good knowledge in playing with all the pieces was very helpful. I notify that this is the first place where I find issues I've been searching for. You have a clever yet attractive way of writing. Keto Diet
Świetny opis CPUID po angielsku http://www.sandpile.org/ia32/cpuid.htm
w 486 CPUID było wprowadzone z tego co pamiętam
w tasmie można wybrać proca w trybie zgodności z masmem → .586
albo P586N
chyba 586 - TASM przy dyrektywie .586P zwraca "Invalid instruction for currently selected processor(s)"
A nie od 486? o_O
www.google.com -> OPCODES.LST - tam sa opisane dalsze funkcje
http://tb.infogem.com.pl/cpuid.html - tez troszke jest
W tagach 'asm' umiescilem kod. Mam nadzieje, ze nie kloci sie to z twoja wizja formatowania (chociaz do kapitalikow nie bardzo pasuje :( )
Szkoda, ze skupiles sie jedynie na procesorach Intela (SSE jest ale 3DNow brak). Chociaz akurat obecne procesory AMD obsluguja takze SSE.
Nieco formatowania tylko dodaj dla większej czytelności i będzie super.