Создание загрузочного модуля (компоновка программы)


После того как мы устранили ошибки и получили объектный модуль, можно приступать к следующему шагу — созданию исполняемого (загрузочного) модуля (к компоновке программы). Главная цель этого шага — преобразовать код и данные в объектных файлах в их перемещаемое выполняемое отображение.

Чтобы понять, в чём здесь суть, нужно разобраться, зачем вообще разделяют процесс создания исполняемого модуля на два шага — трансляцию и компоновку. Это сделано для того, чтобы можно было объединить вместе несколько отдельно оттранслированных исходных модулей в один модуль. При этом в функции компоновщика входит разрешение внешних ссылок (ссылок на процедуры и переменные) в этих модулях.

Результатом работы компоновщика является создание загрузочного файла с расширением .exe. После этого операционная система может загрузить такой файл в память и выполнить его.

Полный формат командной строки для запуска компоновщика достаточно сложен, но для начала вполне достаточно использования уплощенного формата:

 

TLINK [опции] список_объектных_файлов [,имя_загрузочного_модуля][,имя_файла_карты][,имя_файла_библиотеки]

Здесь:

опции — необязательные параметры, управляющие работой компоновщика.

список_объектных_файлов — обязательный параметр, содержащий список компонуемых файлов с расширением .obj. Файлы должны быть разделены пробелами или знаком “+”.

 

Например, TLINK/v prog + mdf + fdr

имя_загрузочного_модуля необязательный параметр, обозначающий имя целевого исполняемого модуля. Если оно не указано, то имя загрузочного модуля будет совпадать с первым именем объектного файла из списка объектных файлов;

имя_файла_карты — необязательный параметр, наличие которого обязывает компоновщик создать специальный файл с картой загрузки. В ней перечисляются имена, адреса загрузки и размеры всех сегментов, входящих в программу;

имя_файла_библиотеки — необязательный параметр, который представляет собой путь к файлу библиотеки. Этот файл с расширением .lib создается и обслуживается специальной утилитой tlib.exe из пакета TASM. Данная утилита позволяет объединить часто используемые подпрограммы в виде объектных модулей в один файл.

Для того чтобы получить список опций программы tlink.exe, достаточно просто запустить её без указания параметров.

Если программа одна, то для получения загрузочного модуля достаточно ввести в командную строку:

TLINK/v prog.obj,,

Опция /v в команде указывает на необходимость сохранения отладочной информации в исполняемом файле и используется в случае отладки программы в среде отладчика. В результате компоновки получим исполняемый модуль prog.exeи файл карты памяти prog.map.