Корвет/Компоновщик L80

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

         �E    Компоновщик  L80.  �F
               -----------------




  Содержание

 Аннотация........................................
1. Назначение компоновщика..........................
2. Обращение к компоновщику.........................
3. Ключи компоновки.................................
4. Сообщения об ошибках.............................


  Аннотация

     В настоящем руководстве рассматривается программа -
компоновщик L80. Описывается назначение и условия применения
программы, позволяющей компоновать перемещаемые модули и созда-
вать из них программы готовые к выполнению.
  

     
     1. Назначение компоновщика

     Компоновщик создает из перемещаемых модулей программы, 
готовые к выполнению. Перемещаемые модули получаются в резуль-
тате трансляции программ, написанных на на различных языках
программирования.

     2. Обращение к компоновщику

     Компоновщик находится на диске в виде файла L80.COM и 
может быть инициализирован одной из следующих команд:

1)     L80
2)     L80 "командная строка"

     В режиме (1) после загрузки компоновщик выводит на экран
запрос * и ждет ввода командной строки.
     В режиме (2) командная строка может состоять из несколь-
ких подстрок. 
     Командная строка L80 состоит из списка имен файлов, раз-
деленных запятыми, и ключей компоновки. Все эти файлы должны 
быть загружены компоновщиком.Формат командной строки следующий:

 Файл 1,файл 2,...,файл N 

     Тип всех файлов - REL.
     Перед любым именем файла можно задать имя диска, с кото-
рого будет загружаться этот файл. По умолчанию файл берется с
текущего диска.
     После выполнения каждой командной подстроки компоновщик,
закончив процесс загрузки, выводит список неопределенных сим-
волов (неудовлетворенных EXTRN), заканчивающийся *. Кроме того,
он выводит адрес начала и конца загруженного файла.

 Пример.
* MAIN
  DATA   0100  0200 Программа занимает область памяти 100H-200H
  SUBR1*      (SUBR1 не определено)
* SUBR1
  DATA   0100  0300 Программа занимает область памяти 100H-300H
*

     Для удовлетворения внешних ссылок необходимо осуществить 
поиск в библиотеке подпрограмм или в библиотеке, созданной 
пользователем.

     3. Ключи компоновки

     При вводе командной строки можно также задавать различные
ключи и с их помощью управлять процессом компоновки. Ключи мож-
но вводить:

     - как отдельные команды;
     - после имени файла;
     - в конце командной строки.

   Ключ                   Производимое действие
   ----                   ---------------------

   /R  Сброс.Перевод L80 в начальное состояние.

   /E  или Завершение компоновки, выход из L80 и возврат в
   /E:"имя"     операционныю систему. На активном диске в сис-
  темной библиотеке ищутся имена для удовлетво-
   рения всех неопределенных ссылок. До выхода в
  систему L80 печатает три числа: стартовый ад-
  рес, адрес следующего доступного байта и число
  использованных страниц (по 256 байт). Если за-
  дано "имя", то оно будет использоваться как 
  стартовый адрес. "имя" должно быть определено
  в одном из модулей. /E используют для загрузки
  скомпонованной программы в память и выхода в
  систему.

   /G  или Завершение компоновки и выполнение программы.
   /G:"имя" L80 осуществляет те же действия, что и при 
  ключе /E, но вместо выхода в систему передает
  управление загруженной программе. Перед запус-
  ком программы L80 печатается сообщение:

   BEGIN EXECUTION

   /N  Если задано "имя файла" /N, то программа под
  заданным именем будет записана на диск. Тип
  файла будет COM. Этот ключ может быть задан
  только совместно с ключем /E или /G.

   /P и /D /P и /D позволяют установить счетчики адреса
  для следующей загружаемой программы. /P и /D
  не влияют на уже загруженные программы.

  Формат ключей:
 
  /P:<адрес> или /D:<адрес>

  где <адрес> - это желаемое значение счетчика 
  адреса в текущей системе счисления (16-ричной 
  по умолчанию; ключ /O устанавливает 8-ричную 
  систему счисления, а /H - 16-ричную). По умол-
  чанию L80 использует ключ /P:103, оставляя 
  3 байта для JMP на начало программы.
    *) Примечание.
  Не следует использовать /P или /D для загрузки
  программы, начиная с адреса 100, если только 
  программа не начинает работать с этого адреса.
  Если ключ /D не задан, то область данных для 
  каждого модуля размещается перед областью про-
  граммы. Если за дан ключ /D, то области DATA и
                COMMON загружаются с заданного адреса.

  Пример.

  */P:200  Разместить область команд с 
    адреса 200
  */R  Сброс компоновки
  */P:200 /D:400 Разместить область команд с 
    200, а область данных с 400 
    по F00.


   /U  Вывести начало и конец программы и области 
  данных, а также все неопределенные EXTRN сразу
  после обработки данной командной подстроки. Ин-
  формация о программе печатается лишь тогда, 
  когда задан ключ /D.

   /M  Вывести начало и конец программы и области дан-
  ных, все определенные EXTRN и их значения и все
  неопределенные EXTRN.

   /S  Для удовлетворения неопределенных EXTRN осуще-
  ствить поиск в файле, заданном непосредственно
  перед ключом /S.

   /X  Если задано:  имя /N, то /X вызовет создание
  файла "имя".HEX

 Примеры:

* EX,EX1,EXAM/N/E Загрузить и скомпоновать модули EX.REL
   и EX1.REL. Создать из них файл EXAM.COM

* MYLIB/S,MYSUB,MYPOG/N,MYPROG/M/G 
  Вести поиск EXTRN в файле MYLIB.REL. Загрузить
  и скомпоновать файлы MYSUB.REL и MYPROG.REL.
  Создать файл MYPROG.COM. Вывести список всех
  EXTRN. Выполнить программу MYPROG.

     Нормальный выход из компоновщика производится по ключу
/E или /G.


     4. Сообщения об ошибках

     В процессе работы L80 может выдать следующие сообщения об
ошибках:

? NO START ADDRESS   Нет стартового адреса.
       Был использован ключ /G, но основная про-
       грамма не загружена.

? LOADING ERROR      Ошибка загрузки.
       Последний заданный для компоновки файл не
       был создан в правильном для L80 формате.

? OUT OF MEMORY      Не достаточно памяти.
       Для загрузки программы недостаточно памяти

? COMMAND ERROR      Ошибка в команде.
       L80 не может опознать команду.

? FILE NOT FOUND     Файл не найден.
       Среди файлов типа REL не найден заданный 
       файл.

% 2ND COMMON LARGER /XXXXXX/
       Второй COMMON болше.
       Начальное задание блока COMMON не задало
       COMMON максимального размера.
       Следует изменить порядок компоновки или
       изменить определение COMMON.

% MULT.DEF.GLOBAL YYYYYY
      Многократное определение глобального имени.
      Одно и то же имя определено как ENTRY в не-
      скольких модулях.

% OVERLAYING PROGRAM AREA, START=XXXX
      DATA  , PUBLIC="символич.имя"(XXXX)
    , EXTERNAL="символич.имя"(XXXX)
   Перекрытие программной области.
   Ключи /P или /D вызовут разрушение уже
   загруженных данных.

? INTERSECTING PROGRAM AREA
        DATA    
         Пересечение областей программы и данных.

? START SYMBUL-"имя"-UNDEFINED
         Не определено имя начала программы.
         После ключа /E: или /G: символ, заданный
         в ключе, отсутствует в программе.

ORIGIN ABOVE LODER MEMORY< MOVE ANYWAY (J OR N)?
       BELOW        Счетчик адреса за пределами памяти.
         Загрузить ниже или удалить?