O num., messml, m2ah, 9dx, ext & mess21hedi, nummldx, yes21hm2: dx, no int 21h m2: - номер строкової змінної для виведення-номер перевіряється біта
При виклику CPUID з Еах = 2 (функція з'явилася, починаючи з Pentium II, в процесорах AMD вона недоступна) в регістрах Еах, ЕВХ, ЕСХ, EDX повертаються так звані В«дескрипториВ», які описують можливості кешей і TLB буферів. Причому AL містить число, яке вказує скільки разів необхідно послідовно виконати CPUID (з Еах = 2 ) для отримання повної інформації. Дескриптори побудовані за таким принципом: ніяких бітів тестувати не потрібно, якщо певний байт просто присутня в регістрі - значить його потрібно інтерпретувати. На практиці зазвичай роблять так, наприклад EDX, спочатку дивляться що в DL, інтерпретують його вміст, потім роблять SHR EDX, 8 і дивляться знову DL і т.д. Ознакою вірогідності інформації в регістрі є біт 31, якщо він дорівнює 1 - вміст регістра достовірно. Перш ніж виконувати команду CPUID з Еах = 2 спочатку потрібно впевнитися, що поточний процесор її підтримує.
Володарі процесорів Pentium III (лише їх) можуть визначити серійний номер свого процесора (попередньо дозволивши в BIOS його повідомлення процесором, яке за замовчуванням вимкнено) за допомогою CPUID з Еах = 3.
У регістрах EDX: ECX повертаються молодші 64 біта номера, разом з тим, що повертається в Еах при CPUID (Еах = 1), вони складають унікальний 96-бітний ідентифікатор процесора (про який, у свій час , було стільки розмов).
Крім того, процесори AMD мають можливості виклику функцій EAX = 80000005h і 80000006h, по них повідомляється така інформація як асоціативність TLB і елементів кеша, але це питання не зачіпається в даній роботі.
У процесорах AMD (починаючи з К5) і Pentium4 є можливості повідомлення деякої 48-символьного рядка (не тієї що за CPUID (O)) ці можливості також задіюються за допомогою номерів функцій більш 80000000b.
Інструкція CPUID доступна в будь-якому режимі процесора і з будь-яким рівнем привілеїв.
У даній роботі програма визначає підтримку MMX, SSE, SSE2 і.т.д. Там використовуються тільки випадки з Еах = 0 і Еах = 1, причина цього проста - починаючи з Еах = 2, починаються дуже великі різночитання між Intel і AMD. Передбачити обидва випадки - значить ускладнити програму і знайти собі проблеми з тестуванням на різних процесорах. br/>
.3 Визначення частоти
Частоту процесора можна визначити багатьма шляхами, в минулі часи вимірювали час виконання циклів, але, треба сказати, що цей метод досить неточний і застосувати не до всіх процесорам.
Починаючи з Pentium в архітектуру був введений лічильник тактів (взагалі кажучи Intel його так не називає, і стверджує що в майбутньому він може рахуват...