Форум программистов, компьютерный форум, киберфорум С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
 Аватар для myxayan
4 / 4 / 8
Регистрация: 16.10.2012
Сообщений: 93

Cpuid информация

20.09.2015, 15:17. Показов 3959. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня Visual Studio 2010, создал Win32 консольное приложение, и нашел код в инете, вставил. Показало кучу ошибок.. может тут есть что-то лишнее? или как правильно создать проект, чтобы просто вывело информацию путем cpuid. а так вообще программа для изменения cpuid процессора, я поудалял много кода, чтобы оставить только вывод инфы.
C++ Скопировано
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
//                       CpuidFake.cpp           
//
// (c) 2010 GNU General Public License [url]www.gnu.org/licenses[/url]
//////////////////////////////////////////////////////////////////////////////
 
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include "MSRDriver.h"
#include "cpuidfake.h"
#include <stdafx.h>
//    Does you compiler support intrinsic functions?
//    If not, comment out the next line and use the inline assembly version
//    of __cpuid defined below.
#include <intrin.h>
 
 
//////////////////////////////////////////////////////////////////////
//
//        Main
//
//////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[]) {
   int i, t;
   int MainThreadProcNum = 0;
 
 
 
   // Write CPUID information before change
   printf("\nCurrent CPUID:\n");
   CpuID::PrintAll();
   printf("\n");
 
  
   // Optional: wait for key press
   printf("\npress any key");
   getch();
 
   // Exit
   return 0;
}
 
//////////////////////////////////////////////////////////////////////////////
//
//        CCpuidManipulate class member functions
//
//  This sets up and manipulates the MSRs that control family and vendor string
//
//////////////////////////////////////////////////////////////////////////////
 
// Constructor
CCpuidManipulate::CCpuidManipulate() {
   // Set everything to zero
    reg[0].MSR = reg[1].MSR = reg[2].MSR = 0;
    ProcessorNumber = 0;
    ChangesRequired = 0;
}
 
void CCpuidManipulate::ReadCurrentFamily() {
   // Read current values for family, model, etc.
   int abcd[4];
   __cpuid (abcd, 1); // Get current family, model, etc. from cpuid(1).eax
   reg[0].q.hi = abcd[0];
}
 
void CCpuidManipulate::ReadCurrentVendor() {
   // Read current value for vendor string
   int abcd[4];
   __cpuid (abcd, 0); // Get current vendor string
   reg[1].q.lo = abcd[1];
   reg[1].q.hi = abcd[3];
   reg[2].q.lo = abcd[2];
   reg[2].q.hi = 0;
}
 
 
 
void CCpuidManipulate::SetFamily(int fam) {
   // Prepare new value for family
   reg[0].eax[1].family = fam;
   reg[0].eax[1].stepping = 0;
   ChangesRequired |= 1;          // change family and model
}
 
void CCpuidManipulate::SetEFamily(int efam) {
   // Prepare new value for extended family
   reg[0].eax[1].Efamily = efam;
   ChangesRequired |= 1;          // change family and model
}
 
void CCpuidManipulate::SetModel(int mod) {
   // Prepare new value for model
   reg[0].eax[1].model = mod;
   ChangesRequired |= 1;          // change family and model
}
 
void CCpuidManipulate::SetEModel(int emod) {
   // Prepare new value for extended model
   reg[0].eax[1].Emodel = emod;
   ChangesRequired |= 1;          // change family and model
}
 
void CCpuidManipulate::SetFamilyModel(int fam, int efam, int mod, int emod) {
   // Prepare new values for family, model, etc. to be set later
   reg[0].eax[1].family = fam;
   reg[0].eax[1].Efamily = efam;
   reg[0].eax[1].model = mod;
   reg[0].eax[1].Emodel = emod;
   reg[0].eax[1].stepping = 0;
   ChangesRequired |= 1;          // change family and model
}
 
void CCpuidManipulate::SetFamilyModel(unsigned int eax) {
   // Prepare new values for family, model, etc., as a bitfield
   reg[0].q.hi = eax;
   ChangesRequired |= 1;          // change family and model
}
 
 
}
 
// put
//////////////////////////////////////////////////////////////////////////////
//
//                    CpuID class member functions
//
//   This reads current CPUID information
//
//////////////////////////////////////////////////////////////////////////////
 
 
void CpuID::PrintVendor() {
   // Print vendor string
   int abcd[4];
   union {
      char s[16];
      int  i[4];
   } name;
   __cpuid (abcd, 0);     // get vendor string
   name.i[0] = abcd[1];   // reorder dwords
   name.i[1] = abcd[3];
   name.i[2] = abcd[2];
   name.i[3] = 0;         // terminate string
   printf("%s", name.s);  // print string
}
 
void CpuID::PrintFamilyAndModel() {
   // Print family and model number
   int abcd[4];
   union {
      int i;
      CPUID0EAX bits;
   } eax;
   __cpuid (abcd, 1);     // get family and model int eax
   eax.i = abcd[0];
   // print family. Family and extended family numbers are added together
   printf("Family: 0x%X, ext: 0x%X, total: 0x%X", 
      eax.bits.family, eax.bits.Efamily, eax.bits.family + eax.bits.Efamily);
   // print model. Model and extended model numbers are concatenated as bits
   printf("\nModel:  0x%X, ext: 0x%X, total: 0x%X", 
      eax.bits.model, eax.bits.Emodel, eax.bits.model | (eax.bits.Emodel << 4));
}
 
void CpuID::PrintFullName() {
   // Print name string
   unsigned int j, k;
   int abcd[4];
   union {
      char s[52];
      unsigned int i[13];
   } name;
   __cpuid (abcd, 0x80000000);     // get vendor string
   if ((unsigned int)abcd[0] < 0x80000004) {
      // No extended name string
      PrintVendor();
   }
   else {
      for (j = 0x80000002, k = 0; j <= 0x80000004; j++, k += 4) {
         __cpuid (abcd, j);     // get 16 characters
         name.i[k]   = abcd[0];
         name.i[k+1] = abcd[1];
         name.i[k+2] = abcd[2];
         name.i[k+3] = abcd[3];
      }
      name.i[k] = 0;            // terminate string
      printf("%s", name.s);     // print string
   }
}
 
void CpuID::PrintAll() {
   // Print vendor, name, family and model
   printf("Vendor: ");
   CpuID::PrintVendor();
   printf("\nName: ");
   CpuID::PrintFullName();
   printf("\n");
   CpuID::PrintFamilyAndModel();
   printf("\n");
}
 
//////////////////////////////////////////////////////////////////////////////
//
//                    CMenu class member functions
//
//   This is the user interface. Makes console based menu and prompts.
//   Implemented as a state machine.
//
//////////////////////////////////////////////////////////////////////////////
 
   
void CMenu::ShowIntro() {
   // show introductory text
   printf("\n                    *** CPUID Fake program ***\n\n"
      "This program can change the CPUID vendor string, family and model number\n"
      "on a VIA Nano processor. Does not work on any other processor.");
 
   // Write CPUID information before change
   printf("\n\nCurrent CPUID:\n");
   CpuID::PrintAll();
   printf("\n");
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.09.2015, 15:17
Ответы с готовыми решениями:

Написать программу- вводная информация в файле in.txt, выходная информация в out.txt
Написать программу- вводная информация в файле in.txt, выходная информация в out.txt. Срочнооо..

CPUID
Доброго времени суток! Я сейчас делаю лабораторную работу, где нужно вывести информацию о процессоре. По-сути, ничего трудного нет, но...

Команда CPUID
Задали задание найти параметры процессора через команду CPUID, все нашел как я думал,но на процессоре Intel(у меня AMD), стал не правильно...

2
Модератор
Эксперт С++
 Аватар для zss
13742 / 10937 / 6485
Регистрация: 18.12.2011
Сообщений: 29,188
20.09.2015, 15:20
Цитата Сообщение от myxayan Посмотреть сообщение
#include <stdafx.h>
Это локальный файл объявления предкомпилированных заголовков.
C++ Скопировано
1
#include "stdafx.h"
Должен стоять ПЕРВЫМ файлом в модуле.

И оно Вам зачем надо?
0
 Аватар для myxayan
4 / 4 / 8
Регистрация: 16.10.2012
Сообщений: 93
20.09.2015, 15:51  [ТС]
Практическая по ЭОМ.. поставил модуль на первое место, все равно.
1>------ Построение начато: проект: eom, Конфигурация: Debug Win32 ------
1>Построение начато 20.09.2015 15:49:18.
1>InitializeBuildStatus:
1> Обращение к "Debug\eom.unsuccessfulbuild".
1>ClCompile:
1> Для всех выходных данных обновления не требуется.
1> eom.cpp
1>c:\users\ян\documents\visual studio 2010\projects\eom\eom\eom.cpp(4): warning C4627: #include <conio.h>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
1>c:\users\ян\documents\visual studio 2010\projects\eom\eom\eom.cpp(5): warning C4627: #include "MSRDriver.h": пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
1>c:\users\ян\documents\visual studio 2010\projects\eom\eom\eom.cpp(6): warning C4627: #include "cpuidfake.h": пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
1>c:\users\ян\documents\visual studio 2010\projects\eom\eom\eom.cpp(11): warning C4627: #include <intrin.h>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
1>c:\users\ян\documents\visual studio 2010\projects\eom\eom\eom.cpp(244): fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник.
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:06.07
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.09.2015, 15:51
Помогаю со студенческими работами здесь

CPUID и FeatureSet
Доброго времени! Подскажите пожалуйста такой момент: Я использую в своей проге код на Ассемблере для получения CPUID. Беру только...

Данные о процессоре (CPUID)
Я работаю на fasm. Препод говорил делать через асемблерную вставочку на с++. но в с++ происходит ошибка доступа, поэтому я пытаюсь сделать...

Почему может не поддерживаться CPUID?
Почему может не поддерживаться CPUID? Использую TASM. Проверяю поддержку CPUID, получается что мой процессор не поддерживает эту команду....

Аналог CPUID для AVR
Собираюсь написать библиотеку, которая использует таймер 0 (в идеале - любой по дефайну пользователя, но это вопрос второстепенный), но в...

Как получить CPUID с помощью WMIC?
Возник вопрос как можно получить CPUID через WMIC? Это вообще возможно? Я знаю про coreinfo от Sysinternals, но начальство ставит жесткие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер