Cтраница 1
Значения действительных адресных констант, определяемых переместимыми выражениями, устанавливаются транслятором относительно условного начального адреса программы. Окончательные значения переместимым выражениям устанавливаются программой Редактор в соответствии с адресом загрузки программы. [1]
По существу, значением адресной константы является адрес некоторого поля программы. Константы типа S используются, как правило, для формирования машинных команд. [2]
Поскольку конкретное распределение памяти ( а значит и адреса объектов) транслятору неизвестно, то он не может окончательно определить значения адресных констант; их доопределение ( по информации, оставляемой транслятором) производится на этапе загрузки программы. [3]
На этом этапе редактор связей, используя служебную информацию: создает текст одного или нескольких модулей ( модулей загрузки); разрешает внешние связи между объединенными в единую программу модулями; определяет значение переместимых адресных констант модулей в зависимости от положения текстов этих модулей в единой программе. [4]
Записи справочника перемещений содержат: код типа записи ( тип Запись справочника перемещений); порядковый номер секции в объектном модуле, в которой находится данная адресная константа; порядковый номер секции в объектном модуле, к которой делается обращение, определяемое адресной константой; адрес расположения адресной константы в программной секции, заданной ее порядковым номером; тип адресной константы, длина ее; значение адресной константы. [5]
DC A ( 4) определяет адресную константу. В качестве значения адресной константы используется значение счетчика адреса команд. [6]
Базовые регистры не решают проблему перемещения программы полностью. Необходимо еще решить довольно трудную задачу изменения значений адресных констант. С помощью адресной константы программист указывает, что определенная ячейка памяти содержит адрес некоторого заданного, поля памяти. [7]
Эти слова должны содержать абсолютные адреса соответствующих байтов. Таким образом, программа, имеющая подпрограммы, теряет переместимость: записать значения адресных констант в свободном массиве основной памяти можно только после того, как программа отнесена к конкретному адресу основной памяти. [8]
Объектный модуль не может быть исполнен до тех пор, пока программные секции в нем не будут увязаны. Остальные программные секции получают адреса относительно начального адреса. Адреса первых байтов объединяемых программных секций при этом выравниваются по границе двойного слова. Одновременно с объединением текстов программных секций объединяются справочники внешних имен и справочники перемещений, разрешая все межсекционные ссылки, представленные адресными константами. Процедура размещения ссылок сводится к вычислению значений адресных констант этих ссылок с учетом перемещений программных секций внутри собираемого загрузочного модуля. [9]
Объектный модуль не может быть исполнен до тех пор, пока программные секции в нем не будут увязаны. Остальные программные секции получают адреса относительно начального адреса. Адреса первых байтов объединяемых программных секций при этом выравниваются по границе двойного слова. Одновременно с объединением текстов программных секций объединяются справочники внешних имен и справочники перемещений, разрешая все межсекционные ссылки, представленные адресными константами. Процедура размещения ссылок сводится к вычислению значений адресных констант этих ссылок с учетом перемещений программных секций внутри собираемого загрузочного модуля. Если при этом были обнаружены ссылки к внешним именам, которых не оказалось в справочниках, редактор организует их поиск в библиотеках. Если никаких указаний относительно структуры загрузочного модуля редактору не сообщается, то он формирует загрузочный модуль простой структуры, загружаемый целиком для исполнения в оперативную память. [10]
Объектный модуль не может быть исполнен до тех пор, пока программные секции в нем не будут увязаны. Остальные программные секции получают адреса относительно начального адреса. Адреса первых байтов объединяемых программных секций при этом выравниваются по границе двойного слова. Одновременно с объединением текстов программных секций объединяются справочники внешних имен и справочники перемещений, разрешая все межсекционные ссылки, представленные адресными константами. Процедура размещения ссылок сводится к вычислению значений адресных констант этих ссылок с учетом перемещений программных секций внутри собираемого загрузочного модуля. [11]