Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Тактовая частота

4.7K
12 ноября 2003 года
kagor
3 / / 17.09.2003
Как при помощи асма(Win32) узнать текущею частоту проца, и сведения о нем?
2
13 ноября 2003 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by kagor
Как при помощи асма(Win32) узнать текущею частоту проца, и сведения о нем?



а почему cpuid не подходит?

воспользуйся функцией
void GetSystemInfo(struct SYS_INFO)

typedef struct _SYSTEM_INFO
{ union
{
DWORD dwOemId;
struct
{
WORD wProcessorArchitecture;
WORD wReserved;
};
};
DWORD dwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel;
WORD wProcessorRevision;

} SYSTEM_INFO;
задаешь структуру push'аеш ее и вызываешь функцию
все будет ок. только не помню дает ли она частоту... но зато с остальными параметрами - порядок!

401
13 ноября 2003 года
Br@in RIPper
289 / / 15.02.2003
инструкции cpuid нет на старых процессорах
2
13 ноября 2003 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Br@in RIPper
инструкции cpuid нет на старых процессорах



не спорю... я подразумевал, что в проце на который пишется Win32-приложение есть эта инструкция.

2
21 ноября 2003 года
squirL
5.6K / / 13.08.2003
double CPUSpeed(void)
{
DWORD dwTimerHi, dwTimerLo;
double dRes;

asm
{
DW 0x310F
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}

Sleep (500);

asm
{
DW 0x310F
sub EAX, dwTimerLo
sub EAX, dwTimerHi
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}

dRes = dwTimerLo/(1000.0*500);
return dRes;
}

вот тебе еще... может запоздало... но наткнулся вот, вспомнил о тебе :)
260
05 декабря 2003 года
Ramon
1.1K / / 16.08.2003
Цитата:
Originally posted by squirL
double CPUSpeed(void)
{
DWORD dwTimerHi, dwTimerLo;
double dRes;

asm
{
DW 0x310F
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}

Sleep (500);

asm
{
DW 0x310F
sub EAX, dwTimerLo
sub EAX, dwTimerHi
mov dwTimerLo, EAX
mov dwTimerHi, EDX
}

dRes = dwTimerLo/(1000.0*500);
return dRes;
}

вот тебе еще... может запоздало... но наткнулся вот, вспомнил о тебе :)


DW 0x310F - это команда RDTSC, которая присутствует в моделях процов начиная с Pentium, а с помощью CPUID опредилить частоту проца вообще невозможно, потому что она ее не возвращает. Кстати CPUID появилась в последних версиях i486, таких как i486DX, i486SX, i486SL и т.д.

2
05 декабря 2003 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by Ramon

DW 0x310F - это команда RDTSC, которая присутствует в моделях процов начиная с Pentium, а с помощью CPUID опредилить частоту проца вообще невозможно, потому что она ее не возвращает. Кстати CPUID появилась в последних версиях i486, таких как i486DX, i486SX, i486SL и т.д.



еще раз. (см. выше). все ваши замечания справедливы, и я с ними абсолютно согласен. но! если человек пишет на Win32 API, значит он как минимум использует Windows 95, и процессор не ниже i485DX, а вероятнее всего - Pentium. потому как иначе - он извращенец... :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог