Линкер Линкер LD предназначен для сборки готовых программ или dll-библиотек из отдельных объектных модулей. В качестве объектных модулей могут высту- пать файлы rel-формата или библиотеки irl-формата (создаваемые библиотека- рем ol.exe). Описание "rel", "irl" форматов смотрите в файлах "rel.rus" и "irl.rus". Строка вызова линкера имеет следующий формат: LD [/keys] [outfile=] infile[/keys] [,infile[/keys] ...] [@ list] где: keys - опции линкера outfile - имя выходного файла программы infile - файл "rel" или "irl" формата @ list - файл подстановок Пример вызова линкера: LD hello.rel После выполнения данной команды получится файл "hello.exe". При своей работе, линкер может создавать на диске временные файлы. Поэтому для ускорения работы линкера рекомендуется использовать его на электронном диске. Опции линкера: A использовать диск для сохранения симв. таблицы D## адрес расположения DATA сегмента E не вставлять EXE заголовок Glabel задать метку 'label' в качестве стартовой L поиск библиотечного файла (опция после имени файла) P## адрес расположения CODE сегмента Q вывести метки вида ?labels на экран R## установить адрес загрузки (адрес ORG-а программы) S вывести список меток на экран T[type:ver] создать DLL библиотеку. Type - внутр. описание библы; Ver - версия библы. Символ ":" разделяет параметры. U заменить все "@" на "_" в именах меток Y исключить DATA сегмент из выходного кода X не создавать SYM файл Создание DLL-библиотек Для создания динамических библиотек служит опция "t". Обратите внимание, что эта опция отменяет вставку exe-заголовка. Отслеживается превышение максимального размера dll-библиотеки в 16 kB. В этом случае линкер выдает предупреждающее сообщение, но линковка библи- отеки не прерывается. Создаваемые dll-библиотеки имеют сигнатуру заголовка "L1". Библиотека этого формата отличается от формата "L0" только тем, что таблица перемещений начи- нается сразу за концом "своего" кода. Заголовок dll-библиотеки создается и прилинковывается автоматически, поэто- му не надо резервировать для него место при написании ассемблерных текстов. Более подробную информацию по dll-библиотекам смотрите в документации менед- жера dll-библиотек. Пример строки вызова линкера: LD /TSymple library:0001 test.rel где: "Symple library" - Строка внутреннего описания библиотеки. Строка описания может содержать пробелы. Длина описания не должна превышать 16 символов, иначе линкер выдаст ошибку. "0001" - Внутренний номер версии библиотеки. Может содержать символы 0..9 и A..F (a..f). "test.rel" - объектный файл, служащий для создания библиотеки. Можно не указывать один из параметров (или все) опции, но символ ":" разде- лителя параметров должен стоять всегда. В случае отсутствия описания - в заголовке библиотеки будет стоять пустая строка. В случае отсутствия номера версии - в заголовке будет стоять нулевой номер. Примеры вызова опции: LD /Tsymple library: test.rel LD /tМоя библиотека: test LD /T:010B test.rel LD /t:7 test LD /t: test.rel Обратите внимание, что строка внутреннего описания библиотеки начинается сразу же за буквой "t" опции. Например, если написать LD /T Example:0001 test.rel то строка описания в заголовке библиотеки будет иметь вид " Example", т.е. начинаться с пробела. Файл подстановок Файл подстановок служит для некоторой "автоматизации" процесса линковки программ. Можно один раз создать файл подстановки и линковать программу, не набирая каждый раз (возможно длинную) строку параметров линкера. Файл подстановок может содержать всего одну строку агрументов или отдельные аргументы могут начинаться с новой строки. В конце файла подстановок должна стоять пустая строка. Размер файла подстановок ограничен до 256 байт и файл может иметь любое имя. Пример вызова линкера с файлами подстановок: LD @ comp.txt или LD @list Примеры файла подстановок. Пример 1 test=prog,clib.irl/l/gxmain/x Пример 2 test=prog, clib.irl/l /gxmain /x В данных примерах собирается программа с заданным именем "test". При лин- ковке используется исходный объектный файл "prog.rel", библиотека "clib.irl" и управление в программе передается на метку "xmain" (это необходимо делать для всех программ, линкуемых с Си-библиотекой "clib.irl"). Опция "x" запре- щает создание sym-файла.