Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #6  
Старый 19.10.2007, 16:37
JCDArtem JCDArtem вне форума
Прохожий
 
Регистрация: 18.10.2007
Сообщения: 17
Репутация: 10
По умолчанию

И, наконец, Часть 4 :

Код:
function TCpuData.P5CacheL1DI: word;
begin
  if CheckMMX then
    P5CacheL1DI:=16
  else
    P5CacheL1DI:=8;
end;

function TCpuData.P6CacheL1DI: word;
begin
  if not CheckMMX then
    P6CacheL1DI:=8
  else
    P6CacheL1DI:=16;
end;

function TCpuData.P6CacheL2: word;
var
  Family, Model, Stepping: byte;
begin
  if CheckCeleron then
    P6CacheL2:=128
  else
  if CheckPentiumIII then
  begin
    GetFMS(Family,Model,Stepping);
    if Model=7 then
      P6CacheL2:=512
    else
    if Model=8 then
      P6cacheL2:=256
    else
      P6CacheL2:=512;
  end
  else
  if not CheckMMX then
    P6CacheL2:=512
  else
    P6CacheL2:=512;
end;

function TCpuData.AuthenticAMD: TCpuRec;
var
  Family, Model, Stepping: byte;
  EFamily, EModel, EStepping: byte;
begin
  GetFMS(Family,Model,Stepping);
  if Family=4 then
  begin
    AuthenticAMD.name:='AMD 486';
    AuthenticAMD.Vendor:=GetVendorString;
    AuthenticAMD.Frequency:=0;
    AuthenticAMD.Family:=Family;
    AuthenticAMD.Model:=Model;
    AuthenticAMD.Stepping:=Stepping;
    AuthenticAMD.L1DCache:=8;
    AuthenticAMD.L1ICache:=8;
    AuthenticAMD.L2Cache:=0;
  end
  else
  if Family=5 then
  begin
    if GetMaxExtendedFunctions>4 then
    begin
      AuthenticAMD.name:=GetExtendedCpuName;
      AuthenticAMD.Vendor:=GetVendorString;
      GetExtendedFMS(EFamily,EModel,EStepping);
      AuthenticAMD.Family:=EFamily;
      AuthenticAMD.Model:=EModel;
      AuthenticAMD.Stepping:=EStepping;
      AuthenticAMD.L1DCache:=GetExtendedL1DCache;
      AuthenticAMD.L1ICache:=GetExtendedL1ICache;
      AuthenticAMD.L2Cache:=0;
    end
    else
    begin
      AuthenticAMD.name:=AMDK5N;
      AuthenticAMD.Vendor:=GetVendorString;
      AuthenticAMD.Family:=Family;
      AuthenticAMD.Model:=Model;
      AuthenticAMD.Stepping:=Stepping;
      AuthenticAMD.L1DCache:=16;
      AuthenticAMD.L1ICache:=16;
      AuthenticAMD.L2Cache:=0;
    end;
  end
  else
  if family>5 then
  begin
    AuthenticAMD.name:=GetExtendedCpuName;
    AuthenticAMD.name:=GetExtendedCpuName;
    AuthenticAMD.Vendor:=GetVendorString;
    GetExtendedFMS(EFamily,EModel,EStepping);
    AuthenticAMD.Family:=EFamily;
    AuthenticAMD.Model:=EModel;
    AuthenticAMD.Stepping:=EStepping;
    AuthenticAMD.L1DCache:=GetExtendedL1DCache;
    AuthenticAMD.L1ICache:=GetExtendedL1ICache;
    AuthenticAMD.L2Cache:=GetExtendedL2Cache;
  end;
end;

function TCpuData.GenuineIntel: TCpuRec;
var
  Family, Model, Stepping: byte;
begin
  GetFMS(Family,Model,Stepping);
  if Family=4 then
  begin
    GenuineIntel.name:='Intel 486';
    GenuineIntel.Vendor:=GetVendorString;
    GenuineIntel.Frequency:=0;
    GenuineIntel.Family:=Family;
    GenuineIntel.Model:=Model;
    GenuineIntel.Stepping:=Stepping;
    GenuineIntel.L1DCache:=8;
    GenuineIntel.L1ICache:=8;
    GenuineIntel.L2Cache:=0;
  end
  else
  if Family=5 then
  begin
    GenuineIntel.name:=IntelP5N;
    GenuineIntel.Vendor:=GetVendorString;
    GenuineIntel.Family:=Family;
    GenuineIntel.Model:=Model;
    GenuineIntel.Stepping:=Stepping;
    GenuineIntel.L1DCache:=P5CacheL1DI;
    GenuineIntel.L1ICache:=P5CacheL1DI;
    GenuineIntel.L2Cache:=0;
  end
  else
  if Family=6 then
  begin
    GenuineIntel.name:=IntelP6N;
    GenuineIntel.Vendor:=GetVendorString;
    GenuineIntel.Family:=Family;
    GenuineIntel.Model:=Model;
    GenuineIntel.Stepping:=Stepping;
    GenuineIntel.L1DCache:=P6CacheL1DI;
    GenuineIntel.L1ICache:=P6CacheL1DI;
    GenuineIntel.L2Cache:=P6CacheL2;
  end
  else
  if Family=$F then
  begin
    if CheckPentium4 then
    begin
      GenuineIntel.name:='Intel Pentium(r) 4';
      GenuineIntel.Vendor:=GetVendorString;
      GenuineIntel.Family:=32;
      GenuineIntel.Model:=Model;
      GenuineIntel.Stepping:=Stepping;
      GenuineIntel.L1DCache:=8;
      GenuineIntel.L1ICache:=12;
      GenuineIntel.L2Cache:=256;
    end
    else
    if CheckIthanium then
    begin
      GenuineIntel.name:='Intel Ithanium';
      GenuineIntel.Vendor:=GetVendorString;
      GenuineIntel.Family:=64;
      GenuineIntel.Model:=Model;
      GenuineIntel.Stepping:=Stepping;
      GenuineIntel.L1DCache:=0;
      GenuineIntel.L1ICache:=0;
      GenuineIntel.L2Cache:=0;
    end;
  end;
end;

function TCpuData.CyrixInstead: TCpuRec;
var
  Family, Model, Stepping: byte;
  EFamily, EModel, EStepping: byte;
begin
  GetFMS(Family,Model,Stepping);
  if Family=4 then
  begin
    CyrixInstead.name:='VIA Cyrix 4x86';
    CyrixInstead.Vendor:=GetVendorString;
    CyrixInstead.Frequency:=0;
    CyrixInstead.Family:=Family;
    CyrixInstead.Model:=Model;
    CyrixInstead.Stepping:=Stepping;
    CyrixInstead.L1DCache:=8;
    CyrixInstead.L1ICache:=8;
    CyrixInstead.L2Cache:=0;
  end
  else
  if Family=5 then
  begin
    CyrixInstead.name:='VIA Cyrix 5x86';
    CyrixInstead.Vendor:=GetVendorString;
    CyrixInstead.Family:=Family;
    CyrixInstead.Model:=Model;
    CyrixInstead.Stepping:=Stepping;
    CyrixInstead.L1DCache:=8;
    CyrixInstead.L1ICache:=8;
    CyrixInstead.L2Cache:=0;
  end
  else
  begin
    if GetMaxExtendedFunctions>0 then
    begin
      CyrixInstead.name:=GetExtendedCpuName;
      CyrixInstead.Vendor:=GetVendorString;
      GetExtendedFMS(EFamily,EModel,EStepping);
      CyrixInstead.Family:=EFamily;
      CyrixInstead.Model:=EModel;
      CyrixInstead.Stepping:=EStepping;
      CyrixInstead.L1DCache:=GetExtendedL1DCache;
      CyrixInstead.L1ICache:=GetExtendedL1ICache;
      CyrixInstead.L2Cache:=GetExtendedL2Cache;
    end
    else
    begin
      CyrixInstead.name:=Cyrix686N;
      CyrixInstead.Vendor:=GetVendorString;
      CyrixInstead.Family:=Family;
      CyrixInstead.Model:=Model;
      CyrixInstead.Stepping:=Stepping;
      CyrixInstead.L1DCache:=32;
      CyrixInstead.L1ICache:=32;
      CyrixInstead.L2Cache:=0;
    end;
  end;
end;

function TCpuData.GenericCPU: TCpuRec;
var
  Family, Model, Stepping: byte;
  EFamily, EModel, EStepping: byte;
begin
  if not GetCPUIDSupport then
  begin
    MessageDlg('This CPU does not support the CPUID instruction!!!',mtWarning,
    [mbOk],0);
    GenericCPU.name:='Unidentified CPU';
    GenericCPU.Vendor:='Unidentified';
    GenericCPU.Frequency:=0;
    GenericCPU.Family:=-1;
    GenericCPU.Model:=-1;
    GenericCPU.Stepping:=-1;
    GenericCPU.L1DCache:=0;
    GenericCPU.L1ICache:=0;
    GenericCPU.L2Cache:=0;
  end
  else
  begin
    GetFMS(Family,Model,Stepping);
    if GetMaxExtendedFunctions>0 then
    begin
      GenericCPU.name:=GetExtendedCPUName;
      GenericCPU.Vendor:=GetVendorString;
      CpuData.GetExtendedFMS(EFamily,EModel,EStepping);
      GenericCPU.Family:=EFamily;
      GenericCPU.Model:=EFamily;
      GenericCPU.Stepping:=EStepping;
      GenericCPU.L1DCache:=GetExtendedL1DCache;
      GenericCPU.L1ICache:=GetExtendedL1ICache;
      GenericCPU.L2Cache:=GetExtendedL2Cache;
    end
    else
    begin
      GenericCPU.name:=GenericCpuN;
      GenericCPU.Vendor:=GetVendorString;
      if Family<=4 then
        GenericCPU.Frequency:=0
      else
      GenericCPU.Family:=Family;
      GenericCPU.Model:=Model;
      GenericCPU.Stepping:=Stepping;
      GenericCPU.L1DCache:=0;
      GenericCPU.L1ICache:=0;
      GenericCPU.L2Cache:=0;
    end;
  end;
end;

{$R *.res}

exports
           {Нужные функции}

begin
end.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter