{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Зависимости: Types
Автор: Gua, gua@ukr.net, ICQ:141585495, Simferopol
Copyright: Unknown
Дата: 17 июля 2002 г.
***************************************************** }function CheckSSE: Boolean;
var
TempCheck: dword;
begin
TempCheck := 1;
asm
push ebx
mov eax,1
db $0F,$A2
test edx,$2000000
jz @NOSSE
mov edx,0
mov TempCheck,edx
@NOSSE:
pop ebx
end;
CheckSSE := (TempCheck = 0);
end;
Here's a translation of the Delphi function into Russian:
Функция CheckSSE объявлена с типом возвращаемого значения Boolean, что означает, что она будет возвращать либо True, либо False.
Местная переменная TempCheck типа dword (32-разрядное целое число) была объявлена.
Внутри блока asm выполняются следующие шаги:
push ebx: Пушит значение регистра ebx на стек.
mov eax,1: Переместит значение 1 в регистр eax.
db $0F,$A2: Это байт-инструкция, которая загружает инструкционный сет SSE2 (SSE2 - расширение к SSE).
test edx,$2000000: Проверяет значение регистра edx против маски $2000000. Если проверка провалилась, то это означает, что SSE не поддерживается.
jz @NOSSE: Перепрыгнет к метке @NOSSE, если проверка провалилась (т.е., SSE не поддерживается).
mov edx,0: Переместит значение 0 в регистр edx.
mov TempCheck,edx: Переместит значение регистра edx в переменную TempCheck.
Блок asm заканчивается инструкцией pop ebx, которая выталкивает значение из стека обратно в регистр ebx.
Функция CheckSSE возвращает значение переменной TempCheck. Если SSE поддерживается, то TempCheck будет равен 0, что означает, что SSE не поддерживается (потому что проверка провалилась и метка @NOSSE была перепрыгнута). В противном случае она будет равна 1, что означает, что SSE поддерживается.
В целом, эта функция проверяет, поддерживает ли CPU инструкции SSE, пытаясь выполнить инструкцию SSE. Если инструкция провалилась или вернула ошибку, то это означает, что SSE не поддерживается. Функция возвращает True, если SSE не поддерживается, и False в противном случае.
В статье описывается функция CheckSSE, позволяющая определить поддержку SSE в системе на языке Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS