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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2010, 17:38   #1
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию Досовская программа.

Что называется досовской программой?
И что называется виндовой программой?

Под этим подразумевается формат исполняемого файла(pe и mz у доса), или у проги есть какие-либо ещё признаки, по которым она относится в ту или иную категорию?
the_deer_one вне форума Ответить с цитированием
Старый 01.09.2010, 17:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Под этим подразумевается формат исполняемого файла
DOS формат - MZ
Виндовс - PE
Это если в кратце
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.09.2010, 17:41   #3
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

Stilet
Цитата:
Это если в кратце
А если не в кратце? Я встречаюсь с тем, что проги формата pe относят к досовским. Хотелось бы понять - почему.
the_deer_one вне форума Ответить с цитированием
Старый 01.09.2010, 17:42   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Это, если подробней:
MZ
PE
Цитата:
Хотелось бы понять - почему.
Потому, что неучи.
Цитата:
PE — 32- и 64-битный формат, используется в современных версиях Windows начиная с Windows NT и Windows 95.
Список спецификаций.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 01.09.2010 в 17:44.
Alex Cones вне форума Ответить с цитированием
Старый 01.09.2010, 18:15   #5
Vikenty
Заслуженный флудер
Участник клуба
 
Аватар для Vikenty
 
Регистрация: 31.03.2010
Сообщений: 1,473
По умолчанию

Досовский формат без заголовка, COM
MZ и PE для Windows
Некоторые Exe можно запустить и в DOS
Vikenty вне форума Ответить с цитированием
Старый 01.09.2010, 20:38   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Vikenty
MZ и PE для Windows
Вы и сами заблуждаетесь и других сбить пытаетесь.
Это не так.
Выше уже даны верные ответы (и даже со ссылками на википедию!)
Так же чётко написано:
Цитата:
MZ — стандартный формат 16-битных исполняемых файлов с расширением .EXE для DOS.
кстати, там же есть информация, почему именно буковки MZ:
Цитата:
Эта сигнатура — инициалы Марка Збиковски (Mark Zbikowski) — одного из создателей операционной системы MS-DOS
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.09.2010, 22:03   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

есть PE программы которые запускаются в ДОС, потому что содержат в себе и MZ заголовок.(обычно содержат все, как минимум с выводом надписи что в ДОС мы не работаем)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.09.2010, 23:25   #8
kogemrka
Форумчанин
 
Аватар для kogemrka
 
Регистрация: 08.01.2010
Сообщений: 165
По умолчанию

Высказанное выше мнение, что в досе были только COM-программы - мягко говоря ошибочное.

COM и MZ - dos
PE - windows.

Но есть один нюанс.
Исполняемый файл в PE-формате начинается с MZ-заголовка. Так сделано для того, чтобы DOS мог опознать его как исполняемую программу, и с заглушки, выводящей "This program cannot run in DOS mode".
Кстати говоря, ничего не мешает вместо этой заглушки написать поноценную dos-программу.

По смещению 0x3c относительно начала файла должно находиться смещение на начало PE-заголовка.
Ну а сам PE-заголовок, будет начинаться с сигнатуры "PE\0\0".

Отсюда, проверить, является ли программа досовской или нет, можно по следующему алгоритму:
  1. Имеет ли файл расширение .com/.exe? Если имеет, идём дальше
  2. Имеет ли файл сигнатуру "MZ" в начале? Если не имеет, мы имеем дело с COM-файлом (следуюет помнить, что COM-файл не обязан иметь расширение COM, а может иметь расширение .exe. Тип файла определяется загрузчиком по сигнатурам, а не по расширению), если имеет- идём дальше
  3. Считываем адрес по смещению 0x3c. Если по считанному смещению находится сигнатура "PE\0\0", это windows приложение, иначе - dos

Последний раз редактировалось kogemrka; 11.09.2010 в 23:27.
kogemrka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09
[PASCAL]Программа создания файла, программа обработки файла Виколяшка Фриланс 7 23.09.2009 17:38
Программа создания файла, программа обработки файла [PASCAL] Виколяшка Помощь студентам 1 22.09.2009 22:56
Хелп! ДОСовская софтина не видит порты. Господин ПэЖэ Софт 17 11.08.2008 11:47