Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Относительная загрузка

Читайте также:
  1. LINUX|| Загрузка в ОС Linux.
  2. Включение компьютера и загрузка ОС
  3. Вопрос 14. Что такое абсолютная чувствительность и относительная чувствительность и как они определяются?
  4. Загрузка в реальном времени (Real-Time Loading, EAI)
  5. Загрузка и выполнение программ на компьютере
  6. Загрузка кода из внешнего файла.
  7. Загрузка операционной системы
  8. Загрузка самой ОС
  9. Загрузка сущностей Связей
  10. Загрузка сущностей Спутников

 

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

Ассемблер при каждой ссылке на символ, соответствующий адресу, генерирует не только “заготовку” адреса в коде, но и запись в таблице перемещений (relocation table). Эта запись хранит место ссылки на такой символ в коде или данных. В качестве “заготовки” адреса обычно используется смещение адресуемого объекта от начала программы. При настройке программы на реальный адрес загрузки нам, таким образом, необходимо пройти по всем объектам, перечисленным в таблице перемещений, и переместить каждую из ссылок – сформировать из заготовки адрес.

Файл, содержащий таблицу перемещений, гораздо сложнее абсолютного загружаемого модуля и носит название относительного или перемещаемого загрузочного модуля. Именно такой формат имеют exe – файлы в системе MS DOS.

Базовая адресация. Объявляем один или несколько регистров процессора базовым (несколько регистров могут использоваться для адресации различных сегментов программы, один – для кода, другой – для статических данных, третий – для стека) и договариваемся, что значения этих регистров программист (компилятор) принимает как данность и никогда сам не модифицирует, зато все адреса в программе он вычисляет на основе значений этих регистров.

В этом случае для перемещения программы нам нужно только изменить значения базовых регистров, и программа даже не узнает, что загружена с другого адреса. Именно так происходит загрузка com – файлов в системе MS – DOS. Система выделяет свободную память, настраивает для программы базовые регистры DS и CS, которые называются сегментными, и передает управление на стартовый адрес. Ничего больше делать не надо.

Позиционно – независимый код. Третий способ формирования адреса в программе - это относительная адресация, когда адрес получается сложением адресного поля команды и адреса самой этой команды – значения счетчика команд. Код, в котором используется только такая адресация, можно загружать с любого адреса без всякой перенастройки. Такой код называется позиционно – независимый (position – independent)

Позиционно – независимые программы очень удобны для загрузки, но, к сожалению, при их написании следует соблюдать довольно жесткие ограничения, накладываемые на используемые методы адресации.. Возникают сложности при сборке программы из нескольких модулей. К тому же, на многих процессорах, например, на Intel 8080/8085 или многих современных RISC – процессорах, описанная выше реализация позиционно – независимого кода вообще невозможна, так как эти процессоры не поддерживают соответствующий режим адресации для данных. Поэтому такой стиль программирования используют только в особых случаях. Например, многие вирусы для MS – DOS и драйверы для RT – 11 написаны именно таким образом.

 




Дата добавления: 2015-01-30; просмотров: 33 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав