Поиск:

Ответ в темуСоздание новой темы Создание опроса
> cpuid 
:(
    Опции темы
Vul
Дата 17.10.2003, 09:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите пожалуйста, как посредством cpuid узнать serial number процессора (Intel)? Проблема в том, что для этого надо, чтобы некий флаг PSN был установлен в 1. Как это сделать?
  Вверх
Chingachguk
Дата 17.10.2003, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Из Зубкова:

Цитата

Команда:
CPUID
Назначение:
Идентификация процессора
Процессор:
80486

CPUID сообщает информацию о производителе, типе и модификации процессора, о наличии и поддержке различных расширений. Команда CPUID поддерживается Intel, начиная с процессоров Intel 80486DX/SX/DX2 SL, UMC U5S, Cyrix M1, AMD 80486DX4. Чтобы проверить, поддерживает ли процессор эту команду, попробуйте установить флаг ID в 1 (бит 21 в регистре EFLAGS) — если это получается, значит, команда CPUID поддерживается.

Результат работы CPUID зависит от значения регистра ЕАХ. Если ЕАХ = 0, CPUID возвращает в ЕАХ максимальное значение, с которым ее можно вызывать (2 для Р6, 1 для Р5), а регистры EBX:ECX:EDX содержат 12-байтную строку — идентификатор производителя (табл. 8).



Таблица 8. Строки производителей в CPUID



Производитель Строка в ЕВХ:ЕСХ:ЕРХ
Intel GenuineIntel
UMC UMC UMC UMC
Cyrix CyrixInstead
AMD AuthenticAMD
NexGen NexGenDriven
Centaur Technology CentaurHalls



Например, для процессоров Intel регистр ЕВХ содержит «Genu» (756E6547h), ЕСХ содержит «ineI» (49656E69h), a EDX — «ntel» (6C65746Eh).

Если ЕАХ = 1, CPUID возвращает в ЕАХ информацию о версии процессора, а в EDX — информацию о поддерживаемых расширениях. Многие понятия в этом описании относятся к работе процессора в защищенном режиме и рассмотрены ниже.

Биты 3 – 0 ЕАХ — Модификация.

Биты 7 – 4 ЕАХ — Модель.

Биты 11 – 8 ЕАХ — Семейство (3 для 386, 4 для 486, 5 для Pentium, 6 для Pentium Pro).

Биты 13 – 12 ЕАХ — Тип (0 — OEM, 1 — Overdrive, 2 — Dual).

Биты 31 – 14 ЕАХ зарезервированы и равны нулю.

Бит 0 EDX — «FPU» Процессор содержит FPU и может выполнять весь набор команд 80387.

Бит 1 EDX — «VME» Процессор поддерживает усовершенствованный режим V86 (флаги VIF и VIP в EFLAGS, биты VME и PVI в CRO).

Бит 2 EDX — «DE» Процессор поддерживает точки останова по вводу/выводу, бит DE в CR0.

Бит 3 EDX — «PSE» Процессор поддерживает страницы до 4 Мб, бит PSE в CR4, модифицированные биты в элементах списков страниц (РDЕ) и таблиц страниц (РТЕ).

Бит 4 EDX — «TSC» Процессор поддерживает команду RDTSC и бит TSC в CR4.

Бит 5 EDX — «MSR» Процессор поддерживает команды RDMSR и WRMSR и машинно-специфичные регистры, совместимые с Pentium.

Бит 6 EDX — «РАЕ» Процессор поддерживает физические адреса больше 32 бит, дополнительный уровень в таблицах трансляции страниц, страницы по 2 Мб и бит РАЕ в CR4. Число бит для физических адресов зависит от модели процессора. Так, Pentium Pro поддерживает 36 бит.

Бит 6 EDX — «РТЕ» (только для Cyrix).

Бит 7 EDX — «МСЕ» Процессор поддерживает бит МСЕ в CR4.

Бит 8 EDX — «СХ8» Процессор поддерживает команду CMPXCHG8B.

Бит 9 EDX — «APIC» Процессор содержит встроенный контроллер прерываний (APIC), и он активирован и доступен.

Бит 9 EDX — «PGE» (только для AMD).

Бит 10 EDX зарезервирован.

Бит 11 EDX — «SEP» Процессор поддерживает быстрые системные вызовы, команды SYSENTER и SYSEXIT (Pentium II).

Бит 12 EDX — «MTRR» Процессор поддерживает машинно-специфичные регистры MTRR.

Бит 13 EDX — «PGE» Процессор поддерживает бит PGE в CR4 и глобальные флаги в PTDE и РТЕ, указывающие элементы TLB, которые принадлежат сразу нескольким задачам.

Бит 14 EDX — «МСА» Процессор поддерживает машинно-специфичный регистр MCG_CAP.

Бит 15 EDX — «CMOV» Процессор поддерживает команды CMOVcc и (если бит 0 EDX установлен) FCMOVcc (Pentium Pro).

Бит 16 EDX — «PAT» Процессор поддерживает таблицу атрибутов страниц.

Биты 17 – 22 зарезервированы.

Бит 23 EDX — «ММХ» Процессор поддерживает набор команд ММХ.

Бит 24 EDX — «FXSR» Процессор поддерживает команды быстрого чтения/записи (ММХ2).

Биты 31 – 25 EDX зарезервированы.

Если ЕАХ = 2, CPUID на процессорах семейства Р6 возвращает в регистрах ЕАХ, ЕВХ, ЕСХ и EDX информацию о кэшах и TLB. Самый младший байт ЕАХ (регистр AL) указывает, сколько раз надо вызвать CPUID с ЕАХ = 2, чтобы получить информацию обо всех кэшах (1 для Pentium Pro и Pentium II). Самый старший бит (бит 31) каждого регистра указывает, содержит ли этот регистр правильную информацию (бит 31 = 0) или он зарезервирован (бит 31 = 1). В первом случае регистр содержит информацию в 1-байтных дескрипторах со следующими значениями:

00h — Пустой дескриптор.

01h — TLB команд, 4-килобайтные страницы, 4-сторонняя ассоциативность, 32 элемента.

02h — TLB команд, 4-мегабайтные страницы, 4-сторонняя ассоциативность, 4 элемента.

03h — TLB данных, 4-килобайтные страницы, 4-сторонняя ассоциативность, 64 элемента.

04h — TLB данных, 4-мегабайтные страницы, 4-сторонняя ассоциативность, 8 элементов.

06h — Кэш команд, 8 Кб, 4-сторонняя ассоциативность, 32 байта в строке.

08h — Кэш команд, 16 Кб, 4-сторонняя ассоциативность, 32 байта в строке.

0Ah — Кэш данных, 8 Кб, 2-сторонняя ассоциативность, 32 байта в строке.

0Ch — Кэш данных, 16 Кб, 2-сторонняя ассоциативность, 32 байта в строке.

41h — Унифицированный кэш, 128 Кб, 4-сторонняя ассоциативность, 32 байта в строке.

42h — Унифицированный кэш, 256 Кб, 4-сторонняя ассоциативность, 32 байта в строке.

43h — Унифицированный кэш, 512 Кб, 4-сторонняя ассоциативность, 32 байта в строке.

44h — Унифицированный кэш, 1 Мб, 4-сторонняя ассоциативность, 32 байта в строке.

Совместимые с Intel процессоры AMD и Cyrix поддерживают вызов «расширенных функций» CPUID со значениями ЕАХ, в которых самый старший бит всегда установлен в 1.

ЕАХ = 80000000h: Возвращает в ЕАХ максимальный номер расширенной функции CPUID, поддерживаемой данным процессором.

ЕАХ = 80000001h: Возвращает в ЕАХ 051Xh для AMD K5 (X — номер модификации) или 061Хh для AMD К6. В EDX эта функция возвращает информацию о поддерживаемых расширениях (указаны только флаги, отличающиеся от CPUID с ЕАХ = 1).

Бит 5 EDX «MSR» — Процессор поддерживает машинно-специфичные регистры, совместимые с К5.

Бит 10 EDX — Процессор поддерживает команды SYSCALL и SYSRET.

Бит 16 EDX — Процессор поддерживает команды FCMOVcc.

Бит 24 EDX — Процессор поддерживает ММХ с расширениями от Cyrix.

Бит 25 EDX — Процессор поддерживает набор команд AMD 3D.

ЕАХ = 80000002h, 80000003h и 80000004h — последовательный вызов CPUID с этими значениями в ЕАХ возвращает в EAX:EBX:ECX:EDX последовательно четыре 16-байтные части строки — имени процессора. Например: «AMD-K5™ Processor».

ЕАХ = 80000005h — Команда возвращает информацию о TLB в регистре ЕВХ (старшее слово — TLB данных, младшее слово — TLB команд, старший байт — ассоциативность, младший байт — число элементов), о кэше данных в регистре ЕСХ и о кэше команд в регистре EDX (биты 31 – 24 — размер в килобайтах, биты 23 – 16 — ассоциативность, биты 15 – 8 — число линий на тэг, биты 7 – 0 — число байт на линию.



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
vul
Дата 17.10.2003, 16:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А про серийник-то здесь ничего и нет...
По идее его биты [63-0] должны возвращатся в регистрах EBX и ECX (по-моему) при EAX=00000003h.
Если же флаг PSN (18-й бит EDX при EAX=00000001h) равен 0 (опция выключена), то в этих регистрах записаны нули (т.е. serial number имеет вид хххх-хххх-0000-0000-0000-0000, а это плохо). Как-то этот PSN видимо можно включить...
Цитата из документа Intel: If the PSN Feature Flags, (EDX register, bit 18) equals “1”, the processor serial number feature is supported, and enabled. If the PSN Feature Flags equals “0”, the processor serial number feature is either not supported, or disabled.
  Вверх
p0s0l
Дата 19.10.2003, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Код
xor eax, eax
cpuid
cmp eax, 3
jb @error // если max уровень запроса CPUID < 3, то ничего не поделать...

mov eax, 1
cpuid
bt edx, 18 // проверка 18 бита edx
jnc @error // если PSN выключен, то тоже уже ничего не сделать...

mov eax, 3
cpuid

// в ecx и edx - биты [00..63] сер. №

Правда, как узнать старшие 32 бита [64..95] серийного номера - не доперло...
Также написано, что серийный номер можно узнать ТОЛЬКО на ТРЕТЬЕМ ПНЕ !
На PI, PII, PIV, Xeon - серийного номера нет...
Ну это я говорил про описаловку Intel. Не знаю как там в других процах...
Так что CPUID будет работать только на третьем пне...
Как програмно на третьем пне отключить или включить бит PSN - ничего не написано.
ЗЫ: На моем Duron750 выдало:
max basic information = 1
max extended information = 80000006
Т.е. тоже серийного номера нет.


--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.