Загрузчики типа «компиляция-выполнение».

Виды загрузчиков.

Одним из возможных способов выполнения функции загрузчика может быть такая организация работы ассемблера, при которой ассемблер, работая в одной части памяти, помещает машинные команды и данные по мере ассемблирования непосредственно в выделенные для них ячейки памяти. После завершения компиляции ассемблер передает управление в точку входа полученной программы. Это очень простое решение, позволяющее обойтись без каких-либо дополнительных процедур. Такая схема называется «компиляция-выполнение», а «загрузчик» состоит из одной команды, которая передает управление ассемблированной программе.


Однако эта схема имеет ряд недостатков:

  • некоторая часть памяти не может быть использована, т.к. занятая ассемблером память недоступна для объектной программы;
  • при каждом новом прогоне приходиться заново транслировать программу пользователя;
  • трудно организовать работу нескольких сегментов программы, особенно, если исходные тексты написаны на разных языках, т.к. каждый язык создает свою среду в ОП.

Достоинства:

  • распределение памяти выполняется автоматически;
  • одна и та же программа-компилятор выполняет функции перемещения и связывания, загрузки и запуска.