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