Cтраница 1
Перемещающий ассемблер и связывающий загрузчик решают эти задачи следующим образом. Во-первых, ассемблер производит объектный код в предположении, что начальный адрес каждой программы равен нулю. Во-вторых, он отмечает каждый относительный адрес или слово данных таким образом, что загрузчик будет знать, на какие части программы влияет перемещение. В-третьих, в ассемблере предусмотрена для программиста возможность объявления некоторых идентификаторов глобальными. Глобальный идентификатор объявляется либо в данной программе меткой или оператором прямого присваивания, либо это может быть сделано в другой программе, транслируемой отдельно. В первом случае глобальный символ называется идентификатором входа, а во втором - внешним идентификатором. [1]
Перемещающие ассемблеры и перемещающие загрузчики устраняют эти проблемы посредством определения адресов загрузки во время процесса загрузки модулей. Для выполнения этой процедуры перемещающие ассемблеры и загрузчики различают абсолютные и перемещаемые величины: значение абсолютной величины ( идентификатора или выражения) не зависит от адреса, по которому производится загрузка программы; значение перемещаемой величины ( идентификатора или выражения) находится в зависимости от адреса, по которому производится загрузка программы. [2]
Программа с внешней ссылкой. [3] |
Следовательно, перемещающий ассемблер предоставляет еще одно средство - возможность определять символические точки входа и внешние ссылки, которые разрешаются в процессе загрузки. [4]
Если в Вашем распоряжении есть Макроассемблер фирмы IBM или какой-либо иной перемещающий Ассемблер, то Вам не надо думать о том, в какой части памяти ЭВМ запоминает Ваши программы и данные. Однако Вы должны знать соответствие между прерываниями и системными программами, чтобы использовать встроенные прерывания или добавить к ним свои собственные. [5]
Перемещающие ассемблеры и перемещающие загрузчики устраняют эти проблемы посредством определения адресов загрузки во время процесса загрузки модулей. Для выполнения этой процедуры перемещающие ассемблеры и загрузчики различают абсолютные и перемещаемые величины: значение абсолютной величины ( идентификатора или выражения) не зависит от адреса, по которому производится загрузка программы; значение перемещаемой величины ( идентификатора или выражения) находится в зависимости от адреса, по которому производится загрузка программы. [6]
Адрес загрузки является первым адресом, по которому программа загружается в память. Как было указано в разд. Перемещающие ассемблеры и редактирующие загрузчики позволяют указывать адреса загрузки позже - во время процедуры загрузки. Почти во всех приложениях эти два программных средства очень важны. [7]