Информатика и технология программирования


СвязываниеВнешние ссылки и точки входа


ВНЕШНЯЯ ССЫЛКА -- обращение к переменной или вызов функции во внутреннем представлении модуля, которые определены в другом модуле и отсутствуют в текущем ТОЧКА ВХОДА -- адрес переменной или функции во внутреннем представлении модуля, к которым возможно обращение из других модулей

ОБЪЕКТНЫЙ МОДУЛЬ -- файл данных, содержащий оттранслированные во внутреннее представление собственные функции и переменные, а также информацию о внешних ссылках и точках входа модуля в символьном виде

КОМПОНОВЩИК, линкер (LINK) -- программа, составляющая из объектных модулей и библиотек загрузочный модуль программы и выполняющая взаимное увязывание (разрешение) внешних ссылок и точек входа модулей

Объектный модуль, полученный в результате трансляции модуля Си-программы, содержит как двоичные, так и символьные данные. Последнее касается, очевидно, тех объектов, которые транслятор оказался не в состоянии оттранслировать, то есть перевести в двоичное представление: команды -для операций и операторов и адреса памяти -для переменных. Рассмотрим, в каком виде присутствуют в объектном модуле переменные и функции различных типов:



-автоматические и статические переменные преобразуются в двоичный код (адреса) без сохранения дополнительной символьной информации;



-операции над переменными, расположенными в данном модуле, аналогично преобразуются в двоичный код (команды);



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



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

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




Начало  Назад  Вперед



Книжный магазин