Функционирование загрузчика

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

 
 

В записи тела модуля указывается:

АДР – относительный адрес записи в модуле;

n – размер записи в байтах;

r – (1 – перемещаемый код)

(0 – неперемещаемый код)

В общем случае программа может иметь несколько точек входа, обозначенных идентификаторами. Тогда она содержит таблицу точек входа, которая построена транслятором и связывает с каждым идентификатором относительный адрес. Загрузчик преобразует относительные адреса в абсолютные адреса: адрес точки входа определяется по идентификатору путём поиска в таблице.

Алгоритм загрузчика имеет следующие параметры вызова:

· имя файла;

· абсолютный адрес загрузки;

· идентификатор точки входа.

Загрузчик осуществляет подстановку: каждый относительный адрес А замещает на абсолютный А + НАЧ, где НАЧ – абсолютный адрес загрузки модуля.



4.2 Функционирование редактора связей.

Редактор связи получает на входе совокупность перемещаемых объектных модулей и строит из них абсолютный загрузочный модуль. Для этого необходимо:

1) Определить его адрес размещения;

2) Произвести модификацию перемещаемой информации;

3) Реализовать связь внешних ссылок;

Обычно составная программа имеет сложную систему ссылок. Так модуль А вызывает модули А1 и А2. В свою очередь модуль А1 вызывает модули А11 и А12. Кроме этого, все модули составной программы могут использовать модули стандартной библиотеки (например, использование мат. Функций sin, cos и др.). В соответствии со структурой составной программы строится система внешних ссылок.

При редактировании связей применяется двухпроходной алгоритм. На первой проходе строится план размещения модулей, и определяются абсолютные адреса всех внешних объектов, на втором обрабатываются ссылки на эти объекты.

После обработки редактором связей формат объектных модулей дополняется таблицей внешних ссылок, которая содержит идентификаторы всех внешних объектов, используемых модулем.


 
 

Соответствие между всеми модулями составной программы обеспечивается глобальной таблицей внешних идентификаторов (идентификатор, абсолютный адрес).

Входными параметрами редактора связей являются:

· адрес загрузки выполняемого модуля;

· имена файлов, содержащих связываемые модули;

· библиотеки для поиска неудовлетворённых ссылок.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: