Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Структура .ЕХЕ и их загрузка в память в MS-DOS
ЕХЕ-файл строит компоновщик.
.ЕХЕ состоит:
1. заголовок (управляющая информация)
2. загрузочный модуль
Заголовок:
1. стандартная часть
2. таблица настройки адресов (имеет переменную длину, состоит из элементов по 4 байта, которые указывают на адрес,, который должен быть настроен).
Смещение от начала файлов:
00-01: 4D5A; 02-03: длина абзаца задачи по модулю 512;
04-05: длина файла в блоках ( кол-во блоков по 512 байт);
06-07: число элементов таблицы настройки адресов; 08-09: длина заголовка в параграфе; 0А-0В: минимальный объем памяти, который нужно выделить после конца абзаца задачи (MIN ALLOC) 0000; 0С-0D: максимальный объем памяти, который нужно выделить после конца абзаца задачи (MIN ALLOC) 0FFFF; 0E-0F: сегментный адрес начала стекового сегмента от начала адреса задачи; 10-11: значение регистра SP при входе в задачу; 12-13: контрольная сумма; 14-15: значение счетчика команд IP при входе в задачу; 16-17: содержимое регистра CS; 18-19: адрес первого элемента табл. настройки адресов; 1А-1В: номер сегмента перекрытий; 1C-1F: либо не испрол-ся, либо содержит комментарии компоновщика; 20-… : таблица настройки адресов.
Настройка адресов:
1. В памяти строиться префикс программного сегмента PSP; 2. С диска считывается стандартная часть заголовка в рабочую область; 3.Определяется длина загрузочного модуля; 4. Определяется адрес, по которому производиться загрузка (начальный сегмент); 5. загрузочный модуль с диска считывается в начальный сегмент; 6. модифицируем адрес из таблицы настройки адресов (берем первый элемент и к сегментному адресу добавляем начальный сегментный адрес → первый элемент указывает, где находиться адрес подлежащий модификации, модифицируем элемент и к начальному адресу добавляем начал. сегмент. адрес); 7. Определяем значение сегментных регистров (регистры CS и SS модифицируются на начал. сегмент. адрес, IP и SP остаются равными значению из заголовка, в ES и DS засылается сегментный адрес PSP, CS:IP определяет реальную точку входа в программу).
Структура ЕХЕ-файлов для Windows
Опирается на структуру .ехе в MS-DOS, начинается с заголовка, в котором указывается какого типа заголовок (MS-DOS заголовок или если смещение от начала файла >40 то указывает по какому смещению находится Windows заголовок).
OLDHEADER (старый заголовок)
Смещение от начала файла:
00 - MS-DOS заголовок (32 б)
20 резерв
18h значение > 40
40 программа заглушка
3С WinInfoOffet адрес информационного заголовка WinInfo
3Е резерв (2б)
WINHEADER
Смещение:
00 WININFO это поле содержит указатель на таблицы файлов infoheader (64 б) :
1. таблица сегментов (содержит хар-ки сегментов кода и данных: смещение, длину, минимальный размер)
2. таблица ресурсов (двоичные абзацы ресурсов копируются компоновщиком в результирующий .ехе файл
вместе с каталогом ресурсов, в котором указаны типы
ресурсов, их расположение, имена связанные с данным ресурсом)
3. таблица резидентных имен (в ней перечислены все экспортируемые функции файла)
4. таблица ссылок на модули (представляет собой список 16-разрядных смещений, адресующие в файле имена импортируемых модулей)
5. табл. импортированных имен (хранит имена модулей, использованных .ехе файлом)
6. табл. точек вход (нумеруются все точки входа, начиная с единицы. Представляет собой связку)
7. табл. нерезидентных имен (представляет собой настроечную таблицу для модификации адресов при загрузке программы. Последние элементы в .ехе сегменты кода и данных приложения , тка как эти сегменты имеют ссылки на другие сегменты, то эти ссылки надо настраивать)