Поддерживает ли процессор набор команд 3DNow!?
Способ первый
function TForm1.Check3DNow: boolean;
var
Temp: dword;
begin
Temp := 1;
asm
push ebx
mov eax, $80000000
dw $A20F
cmp eax, $80000000
jbe @NOEXTENDED
mov eax, $80000001
dw $A20F
test edx, $80000000
jnz @EXIT
@NOEXTENDED:
mov Temp, 0
@EXIT:
pop ebx
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Check3DNow then
ShowMessage( 'Поддерживается' ) else
ShowMessage( 'Не поддерживается' )
end; |
Способ второй
function is3DNowSupport: boolean; assembler;
asm
push ebx
mov @Result, true
mov eax, $80000000
dw $A20F
cmp eax, $80000000
jbe @NOEXTENDED // 3DNow не поддерживается mov eax, $80000001 dw $A20F
test edx, $80000000
jnz @EXIT // 3DNow поддерживается @NOEXTENDED:
mov @Result, false @EXIT:
pop ebx
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if is3DNowSupport then
ShowMessage( 'Поддерживается' ) else
ShowMessage( 'Не поддерживается' )
end; |