<<
>>

Компоновка и загрузка

Большинство программ содержат более одной процедуры. Компиляторы и ассемблеры транслируют одну процедуру и записывают полученный результат на диск. Перед запуском программы должны быть найдены и скомпонованы все оттранслированные процедуры.
Если виртуальная память недоступна, скомпонованная программа должна загружаться непосредственно в основную память. Программы, которые выполняют эти функции, называются по-разному: компоновщиками, компонующими загрузчиками, редакторами связей. Для полной трансляции исходной программы требуется два шага (рис. 7.2):

1. Компиляция или ассемблирование исходных процедур.

2. Компоновка объектных модулей.

Первый шаг выполняется ассемблером или компилятором, второй — компоновщиком.

Рис. 7.2. Для получения исполняемой двоичной программы из совокупности оттранслированных независимо друг от друга процедур используется компоновщик

Трансляция исходной процедуры в объектный модуль — это переход на другой уровень, поскольку исходный и выходной языки имеют разные команды и синтаксис.

Однако при компоновке перехода на другой уровень не происходит, поскольку программы на входе и выходе компоновщика предназначены для одной и той же виртуальной машины. Цель компоновщика — скомпоновать вместе все процедуры, которые транслировались отдельно, чтобы в результате получился исполняемый двоичный код. В системах МБ-БОЗ, Windows 95/98 и Windows ОТ объектные модули имеют расширение .оЬ]‘, а исполняемые программы — .ехе. В и№Х объектные модули имеют расширение .о, а исполняемые программы расширения не имеют.

Компиляторы и ассемблеры транслируют каждую исходную процедуру как отдельную единицу. На это есть веская причина. Если компилятор или ассемблер считывал бы целый ряд исходных процедур и сразу переводил бы их в готовую программу на машинном языке, то при изменении одного оператора в исходной процедуре потребовалось бы заново транслировать все исходные процедуры.

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

<< | >>
Источник: Таненбаум Э.. Архитектура компьютера. 5-е изд. 2007

Еще по теме Компоновка и загрузка:

  1. Статья 918. Загрузка и разгрузка груза
  2. Структура массово-информационной деятельности: сбор, обработка, компоновка, передача, восприятие, трансформация, хранение и использование массовой информации. Потенциальная, принятая и реальная информация. Семантический, синтаксический и прагматический аспекты массово-информационных текстов.
  3. 4. Структура массово-информационной деятельности.
  4. Статья 917. Предоставление транспортных средств и предъявление груза к перевозке
  5. Механизм «второго дыхания»
  6. Вещи правильные – и те, которые работают
  7. М.Руссинович, Д.Соломон. Внутреннее устройство Microsoft Windows (главы 1–4), 2005
  8. Статья 929. Договор транспортного экспедирования
  9. Журналистика как массово-информационная деятельность. Понятия «информация» и «массовая информация». Массовая информация как продукт массово-информационной деятельности. Массовая информация и социальная информация.
  10. 3. Массовая информация.
  11. ОБ АВТОРЕ
  12. Стеклянный журавлик
  13. Медитация, помогающая воссоединиться с платиновым лучом
  14. 3. Субъекты, объекты и основания возникновения права интеллектуальной собственности
  15. 1. Журналистика как массово-информационная деятельность.
  16. 3. Узловые соглашения между транспортными организациями
  17. 1. Понятие договора перевозки груза