C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Работа с процессором, Инфа о процессоре
Sl@Sh
  Отправлено: 04.09.2004, 11:41


Мастер участка

Группа: Участник
Сообщений: 383



Уважаемые коллеги! Кто знает как програмно узнать о процессоре как можно больше информации. Например текущую температуру, предельную температуру и.т.п. Инфа, которая в реестре меня не устраивает, я хочу знать технические характеристики.

Заранее спасибо!!!
Хлор
Отправлено: 06.09.2004, 01:23


Дежурный стрелочник

Группа: Участник
Сообщений: 78



Из биоса можно получить.

Отредактировано Хлор — 06/09/2004, 02:46
Konstantine
Отправлено: 06.09.2004, 08:49


Мастер участка

Группа: Модератор
Сообщений: 545



А как?
Sl@Sh
Отправлено: 06.09.2004, 18:23


Мастер участка

Группа: Участник
Сообщений: 383



Да, меня тоже интересует "как" ? Может кто не понял, но я хочу знать как это реализовать на С++. Я видел кучу прог, которые "знают" всё о процессоре, и меня интересует как такие проги устроены, или проще говоря как написаны.
Георгий
Отправлено: 06.09.2004, 21:51


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



большинство этих "супер" прог банально раршифровывают значение возвращаемое инструкцией CPUID
максимум температуры и энергопортебления обычно берётся из таблиц, заранее зашитых в прогу.
текущая температура — это уже через чтение диагностических регистров чипсета (но этим никогда не запимался, поэтому более подробно рассказать не могу)

Отредактировано Георгий — 06/09/2004, 22:56
Хлор
Отправлено: 06.09.2004, 22:20


Дежурный стрелочник

Группа: Участник
Сообщений: 78



Посмотрите прогу SpeedFan. Она определяет на каких регистрах весят темп датчики и прочая мишура smile.gif

А так считать данные из бивиса, пока ищу, где-то у меня было.

Могу выложить коды на асме для определения модели и тактовой частоты если кому надо, через возвращаемые инструкции
AVC
Отправлено: 07.09.2004, 09:49


Ветеран

Группа: Модератор
Сообщений: 1583



Вот когда то Dima давал ссылку
CODE

// Pentium III serial detection
// Console mode Win32 program which uses VCL
// Borland C++Builder 4 and 5 PRO
// Hens Zimmerman, <hens@gmx.net>

// Suppress W8002 (Restarting compile using assembly)
#pragma option -w-asc

// Enable streaming operators for AnsiString
#define VCL_IOSTREAM

#include <vcl.h>
#pragma hdrstop

#include <iostream>

int main(){

 unsigned long FeatureFlags;
 unsigned long SerialMostSignificantBits;
 unsigned long SerialMiddleSignificantBits;
 unsigned long SerialLeastSignificantBits;

 asm mov eax, 1;

 // Hardcoded CPUID instruction
 __emit__(0x0f);
 __emit__(0xa2);

 asm{
   mov FeatureFlags, edx
   mov SerialMostSignificantBits, eax
   mov eax, 3
 }

 // Hardcoded CPUID instruction
 __emit__(0x0f);
 __emit__(0xa2);

 asm{
   mov SerialMiddleSignificantBits, edx
   mov SerialLeastSignificantBits, ecx
 }

 // Is serial number enabled?
 bool SerialEnabled = (FeatureFlags & 0x40000);

 if(SerialEnabled){
   AnsiString Information;
   Information.sprintf(
     "Feature flags: %X\nSerial: %.08X%.08X%.08X",
     FeatureFlags,
     SerialMostSignificantBits,
     SerialMiddleSignificantBits,
     SerialLeastSignificantBits
   );
   std::cout << Information << std::endl;
 }
 else
   std::cout << "Serial number not available" << std::endl;

 return 0;

}

Вернуться в Вопросы программирования в C++Builder