Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Определение поддержки SSE 2

Delphi , ОС и Железо , Процессор

Определение поддержки SSE 2

Автор: Gua
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Определение поддержки SSE2

Зависимости: Types
Автор:       Gua, gua@ukr.net, ICQ:141585495, Simferopol
Copyright:   Unknown
Дата:        17 июля 2002 г.
***************************************************** }

function CheckSSE2: Boolean;
var
  TempCheck: dword;
begin
  TempCheck := 1;
  asm
  push ebx
  mov eax,1
  db $0F,$A2
  test edx,$4000000
  jz @NOSSE2
  mov edx,0
  mov TempCheck,edx
  @NOSSE2:
  pop ebx
  end;
  CheckSSE2 := (TempCheck = 0);
end;

Here's the translation of the text into Russian:

Код на языке Delphi! Функция CheckSSE2 определяет, поддерживает ли процессор инструкции SSE2. Вот что она делает: 1. Функция объявляет локальную переменную TempCheck типа dword, которая является неотрицательным 32-разрядным целым числом. 2. В блоке asm код pushes значение ebx на стек и устанавливает eax в 1. 3. Затем код выполняет инструкцию db $0F,$A2, которая является байтовой кодировкой SSE2-инструкции (опкод для SSE2-инструкции movdqa). 4. Код затем проверяет, установлен ли высокий бит ($4000000) регистра edx с помощью инструкции test. Если он не установлен, процессор не поддерживает SSE2. 5. Если процессор поддерживает SSE2, код устанавливает edx в 0 и хранит это значение в локальной переменной TempCheck. В противном случае, код прыгает к метке @NOSSE2. 6. Код затем pop-ifies значение ebx из стека с помощью инструкции pop ebx. 7. Наконец, функция возвращает булевое значение, указывающее, поддерживает ли SSE2 или нет, основываясь на значении, хранящемся в TempCheck.

Логика здесь заключается в том, что если процессор поддерживает SSE2, он будет выполнять инструкцию movdqa правильно и устанавливать высокий бит edx. Если не поддерживает SSE2, инструкция будет фальтироваться, и тест будет проваливаться. Функция возвращает True, если SSE2 поддерживается, или False, если нет.

Код это умелый способ определения возможностей процессора с помощью inline-ассембли кода. Интересно отметить, что этот код был написан в 2002 году!

Альтернативное решение может быть использование функции GetCPUInfo из единицы SysUtils в Delphi, которая предоставляет более детальную информацию о процессоре, включая его поддержку инструкций SSE2. Например:

function CheckSSE2: Boolean;
begin
  Result := GetCPUInfo(CPUID_SSE2) = CPUID_SSE2_SUPPORTED;
end;

Эта APPROACH более прямолинейна и легче в обслуживании, чем использование inline-ассембли кода, но требует Delphi 2007 или поздних версий.

В статье описывается функция CheckSSE2 на языке Delphi, которая определяет поддержку SSE2 в системе и возвращает результат в виде булевого значения.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Процессор ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 20:25:01/0.0031421184539795/0