Поддерживает ли процессор набор команд MMX?
Способ первый
function TForm1.CheckMMX: boolean;
var
Temp: dword;
begin
Temp := 1;
asm
push ebx
mov eax,1
db $0F,$A2
test edx,$800000
jz @NOMMX
mov edx,0
mov Temp,edx
@NOMMX:
pop ebx
end;
CheckMMX := Temp = 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckMMX then
ShowMessage( 'Поддерживается' ) else
ShowMessage( 'Неподдерживается' )
end; |
Способ второй
function SupportsMMX: boolean;
begin
Result := false;
try
asm
push eax
push ebx
push ecx
push edx
pushfd
pop eax
mov ebx,eax
xor eax,$00200000
push eax
popfd
pushfd
pop eax
xor eax,ebx
je @NoMMX
mov eax,$01
test edx,$800000
jz @NoMMX
mov byte ptr[Result],1
@NoMMX:
pop edx
pop ecx
pop ebx
pop eax
end;
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if SupportsMMX then
ShowMessage( 'Поддерживается' ) else
ShowMessage( 'Не поддерживается' )
end; |