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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.01.2008, 18:05
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию SSE3 & SSE4 & EM64T?

Всем привет!
Кто знает как проверить поддерживает ли процессор такие технологии(расширения)? Надоело уже в инете искать. На гугл и на сайт Интел’а просьба не посылать.
Ответить с цитированием
  #2  
Старый 20.01.2008, 19:41
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

правда за деньги....

Информация о процессорах, в т. ч. определение поддержки MMX, MMX+, SSE, SSE2, SSE3, 3DNow!, 3DNow!+ и т. д.

http://www.sci.smolensk.ru/users/john/order.html
Ответить с цитированием
  #3  
Старый 20.01.2008, 20:04
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
unit CPU;
interface
uses Windows, Mmsystem, Sysutils, Math, Dialogs;
type
    TCpuRec=record
       Name:string[128];
       Vendor:string[12];
       Frequency:word;
       Family:integer;
       Model:integer;
       Stepping:integer;
       L1DCache:word;
       L1ICache:word;
       L2Cache:word;
     end;
    TCpuType = (cpu8086, cpu286, cpu386, cpu486, cpuPentium);
    TCpuData=object
      function GetCPUIDSupport:Boolean;
      function GetVendorString:string;
      function GetCPUFrequency:word;
      procedure GetFMS(var Family,Model,Stepping:byte);
      function GetMaxCpuId:dword;
      function CheckFPU:Boolean;
      function CheckTSC:Boolean;
      function CheckMSR:Boolean;
      function CheckMPS:Boolean;
      function GetNoCpus:cardinal;
      function CheckPN:Boolean;
      function CheckCMPXCHG8B:Boolean;
      function CheckCMOVe:Boolean;
      function CheckSelfSnoop:Boolean;
      function CheckDebugTraceStore:Boolean;
      function CheckFXSAVEFXRSTOR:Boolean;
      function CheckMMX:Boolean;
      function CheckMMXplus:Boolean;
      function CheckSSE:Boolean;
      function CheckSSE2:Boolean;
      function CheckAMD3DNow:Boolean;
      function CheckAMD3DNowPlus:Boolean;
      function GetMaxExtendedFunctions:dword;
      procedure GetExtendedFMS(var Family,Model,Stepping:byte);
      function GetExtendedCpuName:string;
      function GetExtendedL1DCache:word;
      function GetExtendedL1ICache:word;
      function GetExtendedL2Cache:word;
 
      function CheckCeleron:Boolean;
      function CheckPentiumIII:Boolean;
      function CheckXeon:Boolean;
      function CheckPentium4:Boolean;
      function CheckIthanium:Boolean;
 
//****Aici am conrectat****
      function IntelP5N:string;
      function IntelP6N:string;
//****Pana aici****
      function AMDK5N:string;
      function Cyrix686N:string;
      function GenericCpuN:string;
      function P5CacheL1DI:word;
      function P6CacheL1DI:word;
      function P6CacheL2:word;
 
      function AuthenticAMD:TCpuRec;
 
      function GenuineIntel:TCpuRec;
      function CyrixInstead:TCpuRec;
      function GenericCPU:TCpuRec;
     end;
const
Intel486:array[0..8] of string=
('Intel 486 DX',
  'Intel 486 DX',
  'Intel 486 SX',
  'Intel 486 DX2',
  'Intel 486 SL',
  'Intel 486 SX2',
  'Intel 486 DX2',
  'Intel 486 DX4',
  'Intel 486 DX4');
UMC486:array[0..1] of string=
('UMC U5D',
  'UMC U5S');
AMD486:array[0..5] of string=
('AMD 486 DX2',
  'AMD 486 DX2',
  'AMD 486 DX4',
  'AMD 486 DX4',
  'AMD 5x86',
  'AMD 5x86');
IntelP5:array[0..6] of string=
('Intel Pentium P5 A-Step',
  'Intel Pentium P5',
  'Intel Pentium P54C',
  'Intel Pentium P24T Overdrive',
  'Intel Pentium MMX P55C',
  'Intel Pentium P54C',
  'Intel Pentium MMX P55C');
  NexGenNx586='NexGen Nx586';
  Cyrix4x86='VIA Cyrix 4x86';
  Cyrix5x86='VIA Cyrix 5x86';
  CyrixMediaGX='VIA Cyrix Media GX';
  CyrixM1='VIA Cyrix 6x86';
  CyrixM2='VIA Cyrix 6x86MX';
  CyrixIII='VIA Cyrix III';
  AMDK5:array[0..3] of string=
  ('AMD SSA5 (PR75/PR90/PR100)',
   'AMD 5k86 (PR120/PR133)',
   'AMD 5k86 (PR166)',
   'AMD 5k86 (PR200)');
  AMDK6:array[0..4] of string=
  ('AMD K6 (166~233)',
   'AMD K6 (266~300)',
   'AMD K6-2',
   'AMD K6-III',
   'AMD K6-2+ or K6-III+');
   Centaur:array[0..2] of string=
   ('Centaur C6',
    'Centaur C2',
    'Centaur C3');
   Rise:array[0..1] of string=
   ('Rise mP6',
    'Rise mP6');
   IntelP6:array[0..7] of string=
   ('Intel Pentium Pro A-Step',
    'Intel Pentium Pro',
    'Intel Pentium II',
    'Intel Pentium II',
    'Intel Pentium II',
    'Intel Pentium III',
    'Intel Pentium III',
    'Intel Pentium III');
   AMDK7:array[0..3] of string=
    ('AMD Athlon(tm) Processor',
     'AMD Athlon(tm) Processor',
     'AMD Duron(tm) Processor',
     'AMD Thunderbird Processor');
   IntelP4='Intel Pentium 4';
var CpuData:TCpuData;
implementation
function TCpuData.GetCPUIDSupport:Boolean;
var TempDetect:dword;
begin
asm
  pushf
  pushfd
  push eax
  push ebx
  push ecx
  push edx
 
  pushfd
  pop eax
  mov ebx,eax
  xor eax,$00200000
  push eax
  popfd
  pushfd
  pop eax
  push ebx
  popfd
  xor eax,ebx
  mov TempDetect,eax
 
  pop edx
  pop ecx
  pop ebx
  pop eax
  popfd
  popf
end;
GetCPUIDSupport:=(TempDetect=$00200000);
end;
function TCpuData.GetVendorString:string;
var s1,s2,s3:array[0..3] of char;
    TempVendor:string;
    i:integer;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,0
  db $0F,$A2                /// cpuid
  mov s1,ebx
  mov s2,edx
  mov s3,ecx
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
TempVendor:='';
for i:=0 to 3 do
  TempVendor:=TempVendor+s1[i];
for i:=0 to 3 do
  TempVendor:=TempVendor+s2[i];
for i:=0 to 3 do
  TempVendor:=TempVendor+s3[i];
GetVendorString:=TempVendor;
end;
function TCpuData.GetCPUFrequency:word;
var TimeStart:integer;
    TimeStop:integer;
    StartTicks:dword;
    EndTicks:dword;
    TotalTicks:dword;
    cpuSpeed:dword;
    NeverExit:Boolean;
begin
TimeStart:=0;
TimeStop:=0;
StartTicks:=0;
EndTicks:=0;
TotalTicks:=0;
cpuSpeed:=0;
NeverExit:=True;
TimeStart:=timeGetTime;
while NeverExit do
  begin
  TimeStop:=timeGetTime;
  if ((TimeStop-TimeStart)>1) then
      begin
       asm
        xor eax,eax
        xor ebx,ebx
        xor ecx,ecx
        xor edx,edx
        db $0F,$A2                /// cpuid
        db $0F,$31                /// rdtsc
        mov StartTicks,eax
       end;
      Break;
      end;
  end;
  TimeStart:=TimeStop;
  while NeverExit do
   begin
   TimeStop:=timeGetTime;
   if ((TimeStop-TimeStart)>1000) then
       begin
        asm
         xor eax,eax
         xor ebx,ebx
         xor ecx,ecx
         xor edx,edx
         db $0F,$A2                /// cpuid
         db $0F,$31                /// rdtsc
         mov EndTicks,eax
        end;
        Break;
       end;
    end;
   TotalTicks:=EndTicks-StartTicks;
   cpuSpeed:=TotalTicks div 1000000;
   GetCPUFrequency:=cpuSpeed;
end;
procedure TCpuData.GetFMS(var Family,Model,Stepping:byte);
var TempFlags:dword;
    BinFlags:array[0..31] of byte;
    i,pos:integer;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  mov TempFlags,eax
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
for i:=0 to 31 do
  begin
   BinFlags[i]:=TempFlags mod 2;
   TempFlags:=TempFlags div 2;
  end;
family:=0;
model:=0;
stepping:=0;
  pos:=0;
  for i:=0 to 3 do
   begin
    stepping:=stepping+(BinFlags[pos]*StrToInt(FloatToStr(Power(2,i))));
    inc(pos);
   end;
  pos:=4;
  for i:=0 to 3 do
   begin
    model:=model+(BinFlags[pos]*StrToInt(FloatToStr(Power(2,i))));
    inc(pos);
   end;
  pos:=8;
  for i:=0 to 3 do
   begin
    family:=family+(BinFlags[pos]*StrToInt(FloatToStr(Power(2,i))));
    inc(pos);
   end;
end;
function TCpuData.GetMaxCpuId:dword;
var TempMax:dword;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,0
  db $0F,$A2                /// cpuid
  mov TempMax,eax
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
GetMaxCpuId:=TempMax;
end;
function TCpuData.CheckFPU:Boolean;
label NoFpu;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$1
  jz NoFpu
  mov edx,0
  mov TempCheck,edx
NoFpu:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckFpu:=(TempCheck=0);
end;
function TCpuData.CheckTSC:Boolean;
label NoTSC;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$10
  jz NoTSC
  mov edx,0
  mov TempCheck,edx
NoTSC:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckTSC:=(TempCheck=0);
end;
function TCpuData.CheckMSR:Boolean;
label NoMSR;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$20
  jz NoMSR
  mov edx,0
  mov TempCheck,edx
NoMSR:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckMSR:=(TempCheck=0);
end;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #4  
Старый 20.01.2008, 20:04
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
function TCpuData.CheckMPS:Boolean;
var SysInfo:TSystemInfo;
begin
GetSysTemInfo(SysInfo);
CheckMPS:=(SysInfo.dwNumberOfProcessors>1);
end;
function TCpuData.GetNoCpus:cardinal;
var SysInfo:TSystemInfo;
begin
GetSystemInfo(SysInfo);
GetNoCpus:=SysInfo.dwNumberOfProcessors;
end;
function TCpuData.CheckPN:Boolean;
label NoPN;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$40000
  jz NoPN
  mov edx,0
  mov TempCheck,edx
NoPN:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckPN:=(TempCheck=0);
end;
function TCpuData.CheckCMPXCHG8B:Boolean;
label NoCMPXCHG8B;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$100
  jz NoCMPXCHG8B
  mov edx,0
  mov TempCheck,edx
NoCMPXCHG8B:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckCMPXCHG8B:=(TempCheck=0);
end;
function TCpuData.CheckCMOVe:Boolean;
label NoCMOVe;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$8000
  jz NoCMOVe
  mov edx,0
  mov TempCheck,edx
NoCMOVe:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckCMOVe:=(TempCheck=0);
end;
function TCpuData.CheckSelfSnoop:Boolean;
label NoSelfSnoop;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$8000000
  jz NoSelfSnoop
  mov edx,0
  mov TempCheck,edx
NoSelfSnoop:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckSelfSnoop:=(TempCheck=0);
end;
function TCpuData.CheckDebugTraceStore:Boolean;
label NoDebugTraceStore;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$200000
  jz NoDebugTraceStore
  mov edx,0
  mov TempCheck,edx
NoDebugTraceStore:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckDebugTraceStore:=(TempCheck=0);
end;
function TCpuData.CheckFXSAVEFXRSTOR:Boolean;
label NoFXSAVEFXRSTOR;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$1000000
  jz NoFXSAVEFXRSTOR
  mov edx,0
  mov TempCheck,edx
NoFXSAVEFXRSTOR:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckFXSAVEFXRSTOR:=(TempCheck=0);
end;
function TCpuData.CheckMMX:Boolean;
label NoMMX;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$800000
  jz NoMMX
  mov edx,0
  mov TempCheck,edx
NoMMX:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckMMX:=(TempCheck=0);
end;
function TCpuData.CheckMMXplus:Boolean;
label NoMMXplus;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000001
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  test edx,$400000
  jz NoMMXplus
  mov edx,0
  mov TempCheck,edx
NoMMXplus:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckMMXplus:=(TempCheck=0);
end;
function TCpuData.CheckSSE:Boolean;
label NoSSE;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$2000000
  jz NoSSE
  mov edx,0
  mov TempCheck,edx
NoSSE:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckSSE:=(TempCheck=0);
end;
function TCpuData.CheckSSE2:Boolean;
label NoSSE2;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  test edx,$4000000
  jz NoSSE2
  mov edx,0
  mov TempCheck,edx
NoSSE2:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckSSE2:=(TempCheck=0);
end;
function TCpuData.CheckAMD3DNow:Boolean;
label NoAMD3DNow;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000001
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  test edx,$80000000
  jz NoAMD3DNow
  mov edx,0
  mov TempCheck,edx
NoAMD3DNow:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckAMD3DNow:=(TempCheck=0);
end;
function TCpuData.CheckAMD3DNowPlus:Boolean;
label NoAMD3DNowPlus;
var TempCheck:dword;
begin
TempCheck:=1;
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000001
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  test edx,$40000000
  jz NoAMD3DNowPlus
  mov edx,0
  mov TempCheck,edx
NoAMD3DNowPlus:
  pop edx
  pop ecx
  pop ebx
  pop eax
  end;
CheckAMD3DNowPlus:=(TempCheck=0);
end;
function TCpuData.GetMaxExtendedFunctions:dword;
var TempExt:dword;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000000
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  shl eax,1
  shr eax,1
  mov TempExt,eax
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
GetMaxExtendedFunctions:=TempExt;
end;
 
procedure TCpuData.GetExtendedFMS(var family,model,stepping:byte);
var TempFlags:dword;
    BinFlags:array[0..31] of byte;
    i,pos:integer;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000001
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  mov TempFlags,eax
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
for i:=0 to 31 do
  begin
   BinFlags[i]:=TempFlags mod 2;
   TempFlags:=TempFlags div 2;
  end;
family:=0;
model:=0;
stepping:=0;
  pos:=0;
  for i:=0 to 3 do
   begin
    stepping:=stepping+(BinFlags[pos]*StrToInt(FloatToStr(Power(2,i))));
    inc(pos);
   end;
  pos:=4;
  for i:=0 to 3 do
   begin
    model:=model+(BinFlags[pos]*StrToInt(FloatToStr(Power(2,i))));
    inc(pos);
   end;
  pos:=8;
  for i:=0 to 3 do
   begin
    family:=family+(BinFlags[pos]*StrToInt(FloatToStr(Power(2,i))));
    inc(pos);
   end;
end;
 
function TCpuData.GetExtendedCpuName:string;
var s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12:array[0..3] of char;
    TempCpuName:string;
    i:integer;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000002
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  mov s1,eax
  mov s2,ebx
  mov s3,ecx
  mov s4,edx
  mov eax,$80000003
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  mov s5,eax
  mov s6,ebx
  mov s7,ecx
  mov s8,edx
  mov eax,$80000004
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  mov s9,eax
  mov s10,ebx
  mov s11,ecx
  mov s12,edx
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
  TempCpuName:='';
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s1[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s2[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s3[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s4[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s5[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s6[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s7[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s8[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s9[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s10[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s11[i];
  for i:=0 to 3 do
   TempCpuName:=TempCpuName+s12[i];
  GetExtendedCpuName:=TempCpuName;
end;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #5  
Старый 20.01.2008, 20:05
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
function TCpuData.GetExtendedL1DCache:word;
var L1D,TempL1D:dword;
    BinArray:array[0..31] of byte;
    i,p:integer;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000005
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  mov L1D,ecx
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
for i:=0 to 31 do
  begin
   BinArray[i]:=L1D mod 2;
   L1D:=L1D div 2;
  end;
TempL1D:=0;
p:=0;
for i:=24 to 31 do
  begin
   TempL1D:=TempL1D+(BinArray[i]*StrToInt(FloatToStr(Power(2,p))));
   inc(p);
  end;
GetExtendedL1DCache:=TempL1D;
end;
function TCpuData.GetExtendedL1ICache:word;
var L1I,TempL1I:dword;
    BinArray:array[0..31] of byte;
    i,p:integer;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000005
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  mov L1I,edx
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
for i:=0 to 31 do
  begin
   BinArray[i]:=L1I mod 2;
   L1I:=L1I div 2;
  end;
TempL1I:=0;
p:=0;
for i:=24 to 31 do
  begin
   TempL1I:=TempL1I+(BinArray[i]*StrToInt(FloatToStr(Power(2,p))));
   inc(p);
  end;
GetExtendedL1ICache:=TempL1I;
end;
function TCpuData.GetExtendedL2Cache:word;
var L2,TempL2:dword;
    BinArray:array[0..31] of byte;
    i,p:integer;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,$80000006
  mov ebx,0
  mov ecx,0
  mov edx,0
  db $0F,$A2                /// cpuid
  mov L2,ecx
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
for i:=0 to 31 do
  begin
   BinArray[i]:=L2 mod 2;
   L2:=L2 div 2;
  end;
TempL2:=0;
p:=0;
for i:=16 to 31 do
  begin
   TempL2:=TempL2+(BinArray[i]*StrToInt(FloatToStr(Power(2,p))));
   inc(p);
  end;
GetExtendedL2Cache:=TempL2;
end;
function TCpuData.CheckCeleron:Boolean;
var BId:byte;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  mov BId,bl
  pop edx
  pop ecx
  pop ebx
    
  pop eax
end;
CheckCeleron:=(BId=$1);
end;
function TCpuData.CheckPentiumIII:Boolean;
var BId:byte;
begin
CheckPentiumIII:=(CheckMMX and CheckSSE);
end;
function TCpuData.CheckXeon:Boolean;
var BId:byte;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  mov BId,bl
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
CheckXeon:=(BId=$3);
end;
function TCpuData.CheckPentium4:Boolean;
var BId:byte;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  mov BId,bl
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
CheckPentium4:=(BId=$8);
end;
function TCpuData.CheckIthanium:Boolean;
var res:dword;
    BinArray:array[0..31] of byte;
    i:byte;
begin
asm
  push eax
  push ebx
  push ecx
  push edx
  mov eax,1
  db $0F,$A2                /// cpuid
  mov res,edx
  pop edx
  pop ecx
  pop ebx
  pop eax
end;
for i:=0 to 31 do
  begin
   BinArray[i]:=res mod 2;
   res:=res div 2;
  end;
CheckIthanium:=(CheckPentium4 and (BinArray[30]=1));
end;
function TCpuData.IntelP5N:string;
begin
If CheckMMX then IntelP5N:='Intel Pentium(r) MMX(tm)'
else IntelP5N:='Intel Pentium(r)';
end;
function TCpuData.IntelP6N:string;
begin
if CheckCeleron then IntelP6N:='Intel Celeron(r)'
else
if CheckPentiumIII then IntelP6N:='Intel Pentium(r) III'
else
if CheckXeon then IntelP6N:='Intel Pentium(r) III Xeon(tm)'
else
if not CheckMMX then IntelP6N:='Intel Pentium(r) PRO'
else IntelP6N:='Intel Pentium(r) II';  
end;
function TCpuData.AMDK5N:string;
var Family,Model,Stepping:byte;
begin
GetFMS(Family,Model,Stepping);
if Model=0 then AMDK5N:='AMD K5'
else AMDK5N:=GetExtendedCpuName;
end;
function TCpuData.Cyrix686N:string;
begin
if CpuData.GetMaxExtendedFunctions>0 then Cyrix686N:=GetExtendedCpuName
else
if CheckMMX then Cyrix686N:='VIA Cyrix 6x86MII'
else
Cyrix686N:='VIA Cyrix 6x86';
end;
function TCpuData.GenericCpuN:string;
var SysInfo:TSystemInfo;
begin
GetSystemInfo(SysInfo);
if SysInfo.dwProcessorType=386
    then GenericCpuN:='Generic 386 CPU'
else
if SysInfo.dwProcessorType=486
    then GenericCpuN:='Generic 486 CPU'
else
if SysInfo.dwProcessorType=586
    then GenericCpuN:='Pentium Class CPU'
else GenericCpuN:='Unknown CPU';
end;
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;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #6  
Старый 20.01.2008, 20:06
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
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;
                       AuthenticAMD.Frequency:=GetCPUFrequency;
                       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.Frequency:=GetCPUFrequency;
                    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;
                  AuthenticAMD.Frequency:=GetCPUFrequency;
                  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.Frequency:=GetCPUFrequency;
                   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.Frequency:=GetCPUFrequency;
                   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.Frequency:=GetCPUFrequency;
                      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.Frequency:=GetCPUFrequency;
                       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.Frequency:=GetCPUFrequency;
                   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;
            CyrixInstead.Frequency:=GetCPUFrequency;
            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.Frequency:=GetCPUFrequency;
             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;
      GenericCPU.Frequency:=GetCPUFrequency;
      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.Frequency:=GetCPUFrequency;
       GenericCPU.Family:=Family;
       GenericCPU.Model:=Model;
       GenericCPU.Stepping:=Stepping;
       GenericCPU.L1DCache:=0;
       GenericCPU.L1ICache:=0;
       GenericCPU.L2Cache:=0;
      end;
end;
end;
end.
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #7  
Старый 20.01.2008, 20:23
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

The Shadow

А можно с комментами???

Просто в этих строках:

Код:
1
2
mov eax,$80000005
mov eax,$80000006

у меня вылетает ошибка памяти, после чего Delphi напрочь отказывается работать! Только рэбут машины спасает...

Просто интересно....
Ответить с цитированием
  #8  
Старый 20.01.2008, 21:07
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Я ассемблер не знаю
Но у меня работает. Вот программа
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #9  
Старый 20.01.2008, 21:29
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Все классно, но есть ряд недоделок...:

1) При нажатии на кнопку "Просмотреть процессы" - пустой листбох, но при клике на листбокс все появляется!!
2) Айпишник - мой, а МАК - сервака.

А во всем остальном все супер!!! Есть исходник без вылета ошибок??? буду очень благодарен, т.к. прога классная!

+ ко всему - не в обиду сказано!

Последний раз редактировалось ~ SaM ~, 20.01.2008 в 21:37.
Ответить с цитированием
  #10  
Старый 20.01.2008, 21:30
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

~ SaM ~
Млин, я имелл в виду как это сделать програмно, а не посмотреть в чьей-то касой проги, да ещё и бабкт за это платить. Кстати на халяву можносмотреть в CPU-Z.
The Shadow
Спасибо за предоставленную возможность посмотреть этот боянистый код ещё раз. Но того, чего я просил, если ты не заметил, там нету.
Ответить с цитированием
  #11  
Старый 20.01.2008, 21:36
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Цитата:
Млин, я имелл в виду как это сделать програмно, а не посмотреть в чьей-то касой проги, да ещё и бабкт за это платить. Кстати на халяву можносмотреть в CPU-Z.

Прога не косая! Удачи.
Ответить с цитированием
  #12  
Старый 21.01.2008, 00:52
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
1) При нажатии на кнопку "Просмотреть процессы" - пустой листбох, но при клике на листбокс все появляется!!
2) Айпишник - мой, а МАК - сервака.

Ну незнаю ...!!!
У меня эти пункты работают нормально
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #13  
Старый 21.01.2008, 02:14
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Сообщение SSE3 & SSE4 & EM64T

Вот модуль FastcodeCPUID.pas
добавляешь в свой проект
CPU.InstructionSupport - набор из TInstructions
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TInstructions =
  (isFPU, {80x87}
  isTSC, {RDTSC}
  isCX8, {CMPXCHG8B}
  isSEP, {SYSENTER/SYSEXIT}
  isCMOV, {CMOVcc, and if isFPU, FCMOVcc/FCOMI}
  isMMX, {MMX}
  isFXSR, {FXSAVE/FXRSTOR}
  isSSE, {SSE}
  isSSE2, {SSE2}
  isSSE3, {SSE3*}
  isMONITOR, {MONITOR/MWAIT*}
  isCX16, {CMPXCHG16B*}
  isX64, {AMD AMD64* or Intel EM64T*}
  isExMMX, {MMX+ - AMD only}
  isEx3DNow, {3DNow!+ - AMD only}
  is3DNow); {3DNow! - AMD only}
для проверки напр для EM64T:
Код:
1
if isX64 in CPU.InstructionSupport then ...

PS: Найдено сдесь:
http://www.google.ru/codesearch?hl=r...eCPUID.pas#l44
скачать:
http://www.google.ru/codesearch/url?...cU_r1lqoG0-B7w
Вложения
Тип файла: 7z FastcodeCPUID.7z (5.1 Кбайт, 13 просмотров)
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887

Последний раз редактировалось Rokuell, 21.01.2008 в 02:18.
Ответить с цитированием
  #14  
Старый 21.01.2008, 11:28
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Цитата:
Сообщение от Adler
Кто знает как проверить поддерживает ли процессор такие технологии(расширения)?
Цитата:
Сообщение от Adler
Но того, чего я просил, если ты не заметил, там нету.
Код:
1
2
3
4
function TCpuData.CheckMPS:Boolean; //Возвращает True, если поддерживается MPS
function TCpuData.CheckFPU:Boolean; //Возвращает True, если поддерживается FPU
function TCpuData.CheckTSC:Boolean; //Возвращает True, если поддерживается TSC
//и т.д.
А что тебе тогда надо?
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #15  
Старый 21.01.2008, 19:29
Adler Adler вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 34
Репутация: 10
По умолчанию

The Shadow
Цитата:
SSE3 & SSE4 & EM64T?
- Заголовок темы. Вот эти конкретно и нужны. Что-то я пропустил, что за MPS,TSC? Кстати насчёт твоей программы:
1) Пишет, что у меня ОЗУ 2Gb, а на самом деле у меня 3Gb. Если надо могу сказать, как определять правильно.
2) Загрузка ЦП по ходу не пашет.
3) Всё окно на экране с трудом убераеться(1024х768).
4) Открой секрет, как узнать зашитое имя Процессора. Я пытался найти в реестре, но не нашёл его постоянное место жительства(он то и дело кочует из одной ветки в другую в зависимости от ЦП и Оси.
В целом программа хорошая. Зачёт.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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