Вопрос № 28916: Ответьте пожалуйста на такой тупой вопрос:
У меня 2ве операционки Win XP и ради эксперимента Win 98, пишу такую вещь:
....
....
mov ax,4F02h
mov bx,0101h ;режим 640х480*256
int 10h
....
....работает и в вин98, и ...Вопрос № 28941: Привет всем!
Подскажите плз. как программно определить
какие инструкции поддерживает процессор -
MMX, SSE, SSE1, SSE2?
Спасибо за ответы....
Вопрос № 28.916
Ответьте пожалуйста на такой тупой вопрос:
У меня 2ве операционки Win XP и ради эксперимента Win 98, пишу такую вещь:
....
....
mov ax,4F02h
mov bx,0101h ;режим 640х480*256
int 10h
....
....работает и в вин98, и в винХП
стоит написать
...
....
mov ax,4F02h
mov bx,0103h ;режим 800х600*256 или даже выше
int 10h
....
....в XP-шнике уже не работает, а в 98-ой винде всё без проблем
Можете объяснить почему так?
Отвечает: Евгений Иванов
Здравствуйте, Петров Максим Викторович!
настроить нужно эмуляцию ДОС.
а вообще-то используй Direct X.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 04.11.2005, 18:42
Вопрос № 28.941
Привет всем!
Подскажите плз. как программно определить
какие инструкции поддерживает процессор -
MMX, SSE, SSE1, SSE2?
Спасибо за ответы.
Отправлен: 05.11.2005, 11:05
Вопрос задал: 1 (статус: 2-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, 1!
для этого есть CPUID флаги SSE, SSE2 (25 and 26).
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 05.11.2005, 11:17 Оценка за ответ: 5 Комментарий оценки: Краткость как говориться - сестра таланта. Спасибо.
Отвечает: Юра Устинов
Здравствуйте, 1!
Команда:
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).
Производитель Строка в ЕВХ:ЕСХ:ЕРХ
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-байтных дескрипторах со следующими
значениями:
<У нас ограничение в 6000 символов поэтому про кэш сам добывай>
Совместимые с 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(tm) Processor».
ЕАХ = 80000005h — Команда возвращает информацию о TLB в регистре ЕВХ (старшее слово — TLB данных, младшее слово — TLB команд, старший байт — ассоциативность, младший байт — число элементов), о кэше данных в регистре ЕСХ и о кэше команд в регистре EDX (биты 31 – 24 — размер в килобайтах, биты 23 – 16 — ассоциативность, биты 15 – 8 — число линий на тэг, биты 7 – 0 — число байт на линию.
Удачи!!!
--------- Спасём Россию!!!
Ответ отправил: Юра Устинов (статус: 4-ый класс)
Отправлен: 05.11.2005, 11:57 Оценка за ответ: 5 Комментарий оценки: Спасибо конечно за столь подробный ответ, но где же найти бит поддержки SSE?
Отвечает: Лысков Игорь Витальевич
Здравствуйте, 1!
Об использовании CPUID почитай ftp://download.intel.com/support/processors/procid/24161815.pdf
Особо обрати внимание на ответ в регистре EDX(таблица 5) при EAX=1
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: 8-ой класс)
Отправлен: 05.11.2005, 12:30 Оценка за ответ: 5 Комментарий оценки: Спасибо за ссылку!