Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2009, 14:14   #1
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию Узнать разрядность процессора

Как можно средствами DELPHI или API узнать разрядность процессора: 32 или 64 бит?
dimonbest вне форума Ответить с цитированием
Старый 10.01.2009, 14:42   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

попробуй так
Код:
function Is64bitAvail:BOOL;assembler;
asm
  mov eax, $80000001
  cpuid
  mov eax, 1
  shl eax, 29
  and edx, eax
  mov eax, edx
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  if Is64bitAvail then showmessage('поддерживается 64 битный режим');
end;
тестил на 64 битном процессоре, работает. попробуй на не 64 битном.
rpy3uH вне форума Ответить с цитированием
Старый 10.01.2009, 15:50   #3
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

У меня процессор 32 бит.
А где можно взять аналогичную процедурку для него? Типа Is32bitAvail...
dimonbest вне форума Ответить с цитированием
Старый 10.01.2009, 16:05   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

а чем не устраивает указанная выше ? или с логическими операциями вы не знакомы ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 10.01.2009, 19:36   #5
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Вроде получилось:
Код:
function Is64bitAvail:BOOL;assembler;
asm
  mov eax, $80000001
  cpuid
  mov eax, 1
  shl eax, 29
  and edx, eax
  mov eax, edx
end;

function Is32bitAvail:BOOL;assembler;
asm
  mov eax, $8001
  cpuid
  mov eax, 1
  shl eax, 29
  and edx, eax
  mov eax, edx
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Is64bitAvail then showmessage('поддерживается 64 битный режим');
  if Is32bitAvail then showmessage('поддерживается 32 битный режим');
end;
Спасибо за код!
dimonbest вне форума Ответить с цитированием
Старый 11.01.2009, 13:31   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от dimonbest Посмотреть сообщение
У меня процессор 32 бит.
А где можно взять аналогичную процедурку для него? Типа Is32bitAvail...
а зачем это? где ты найдёшь процессор который не поддерживает 32 битный режим? А если и найдёшь, то твоя программа всё равно не запустится на нём.
Переформулирую вышесказанное: твоя программа может запуститься только в двух случаях в 32-битной Windows или в 64-битной Windows. Если процессор поддерживает 64 битный режим значит он поддерживает и 32 битный режим.


Цитата:
Код:
function Is32bitAvail:BOOL;assembler;
asm
  mov eax, $8001
  cpuid
  mov eax, 1
  shl eax, 29
  and edx, eax
  mov eax, edx
end;
этот код полностью лишён смысла! и то что он даёт результат TRUE это чистая случайность.

Последний раз редактировалось rpy3uH; 11.01.2009 в 13:38.
rpy3uH вне форума Ответить с цитированием
Старый 11.01.2009, 16:42   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Квэнди намекнул уже, но товарищ не понял...
А Грузин и допустить не мог, что такое можно не понять...
Привожу явно:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Is64bitAvail then showmessage('поддерживается 64 битный режим') 
else showmessage('поддерживается 32 битный режим');
end;
mihali4 вне форума Ответить с цитированием
Старый 12.01.2009, 21:34   #8
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Все понял, спасибо!
dimonbest вне форума Ответить с цитированием
Старый 21.12.2010, 01:39   #9
Jibber
Новичок
Джуниор
 
Регистрация: 21.12.2010
Сообщений: 1
По умолчанию

Здравствуйте! Помогите написать эту программу на Аssembler'e. Заранее спасибо.

Последний раз редактировалось Jibber; 21.12.2010 в 01:42.
Jibber вне форума Ответить с цитированием
Старый 22.12.2010, 00:04   #10
Нара
 
Аватар для Нара
 
Регистрация: 21.12.2010
Сообщений: 3
Печаль

Да, ребят, мне тоже необходима именно эта программа, только на Ассемблере. помогите кто-нибудь! во всем интернете ваш пост на эту тему единственный... (надеюсь, я не "наоффтопила", ибо копипастить вашу программу в новую тему и объяснять, что нужно "тоже самое, только на языке машины" - абсурд)

Последний раз редактировалось Нара; 22.12.2010 в 00:24.
Нара вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить тактовою частоту процессора и узнать название активной видеокарты и объём памяти SalasAndriy C++ Builder 7 14.04.2012 16:17
Разрядность ОСи x86/x64 Veiron Win Api 11 13.12.2010 17:26
разрядность кода satanatas Помощь студентам 4 11.01.2008 18:15
Загрузка процессора Terran Общие вопросы Delphi 1 15.12.2007 22:27
Delphi 6 - Программа должна узнать уровень загруженности процессора Никки Общие вопросы Delphi 3 20.11.2007 19:40