Цикл трансляции, компоновки и выполнения

Процесс редактирования исходного ассемблерного файла (т.е. написания программы), его компиляции, компоновки и выполнения схематически показан на рисунке.

Ниже приведено подробное описание каждого этапа.

1. С помощью текстового редактора программист создает исходный текстовый файл {source file), содержащий программу на ассемблере.

2. На вход программы ассемблера подается исходный файл, а на выходе получается объектный файл, содержащий машинный код. В качестве дополнительной возможности, ассемблер может создать файя листинга {listing file) программы. Если при компиляции возникнут ошибки, программист должен вернуться к п. 1 и устранить причину их появления. Файл листинга программы предназначен, в основном, для получения твердой копии программы принтере. Поэтому, кроме текста самой программы, разбитого на страницы, в нем содержатся номера строк, адреса команд (точнее, их смешений относительно сегмента кода), оттранслированный машинный код, представленный в шестнадцатеричном виде, и таблица символов.

3. Содержимое объектного файла анализируется компоновщиком. Он определяет, есть ли в программе так называемые внешние ссылки, т.е. содержит ли программа команды вызова процедур, находящихся в одной из библиотек объектных модулей (link library). Компоновщик находит эти ссылки в объектном файле программы, копирует необходимые процедуры из библиотек, объединяет их вместе с объектным файлом (этот процесс называется разрешением внешних ссылок) и создает исполняемый файл (executable flle). В качестве дополнительной возможности компоновщик может создать файл перекрестных ссылок {mapfile), содержащий план полученного исполняемого файла.

4. Компонент операционной системы, называемый загрузчиком (loader), считывает данные из исполняемого файла, загружает программу в память и передает управление по адресу точки входа. В результате программа начинает выполняться.

Файлы, создаваемые и модифицируемые компоновщиком.

Файл перекрестных ссылок. Это обычный текстовый файл, имеющий расширение .MAP, в котором содержится информация о сегментах, содержащихся в компонуемой программе, а также следующие данные.

· Имя исполняемого модуля, которое представляет собой базовое имя (т.е. без расширения) исходного АSМ-файла.

· Дата и время, полученные из заголовка исполняемого файла (а не из элемента каталога файловой системы).

· Список сегментов программы, упорядоченный по группам. Для каждой группы указывается начальный адрес, длина, имя группы и класс.

· Список глобальных (public) символов с указанием для каждого символа его адреса, имени, линейного адреса и имени модуля, где определен этот символ.

· Адрес точки входа в программу.

Файл базы данных программы. Если при запуске ассемблера указать в командной строке ключ -Zi (он задает режим отладки), MASM создаст специальный файл базы данныхпрограммы (j)rogram databasefik) с расширением .PDB. На этапе компоновки редактор связей считывает информацию из PDB-файла и обновляет ее. Если после этого загрузить программу в отладчик, тот сможет показать вам в своем окне