Читайте также: |
|
Для того чтобы избавиться от противоречия, возникающего в связи с размещением пользовательских программ и библиотечных подпрограмм в конкретных ячейках памяти, необходимо программы и подпрограммы готовить таким образом, чтобы их размещение в памяти определялось в момент загрузки. В этом случае загрузочный код программы не определяет непосредственно физические адреса, но имеет необходимую информацию, чтобы выполнять настройку в процессе загрузки.
Программа, подготовленная в такой форме, называется перемещаемой, а загрузчик, который настраивает ее на физические адреса, - настраивающим загрузчиком.
Программа, подлежащая загрузке и настройке, называется загрузочной программой (исполнимой программой, программой в загрузочном коде). Настраиваемая единица загрузочной программы обычно называется сегментом. Адресные поля команд (имеются в виду машинные команды) должны быть скорректированы загрузчиком на константу смещения относительно начала сегмента в памяти. Поля данных и команд, требующие такую корректировку, называются относительными. Поля, не требующие корректировки, называются абсолютными.
К абсолютным полям относятся:
- код операции;
- адреса регистров;
- непосредственно заданные данные (в команде);
- константы сдвига;
- константы, не относящиеся к адресным.
К относительным полям относятся:
- поля операндов, заданные через их адреса;
- адресные константы (адреса ячейки памяти, где находятся необходимые данные).
Признак настройки каждого поля, т.е. относительное оно или абсолютное, формируется транслятором и фиксируется в загрузочной программе.
Функции настраивающего загрузчика:
- загрузить программу по адресу, заданную монитором работ;
- настроить все относительные поля на физические адреса с учетом начала сегмента;
- передать управление по адресу точки входа.
Реализация загрузчиков зависит от используемых в ЭВМ способов адресации. Три способа являются наиболее общими.
1. Явная адресация, встречающаяся в малых 8-разрядных ЭВМ (СМ 1800 и др.). Все операнды, связанные с памятью, должны быть пересчитаны на физические адреса.
2. Неявная сегментная адресация. Используется во многих ЭВМ: в ПЭВМ 16-разрядных и выше типа IBM, мини ЭВМ типа СМ-3, СМ-4, PDP-10 и др. В командах операнды в памяти задаются в виде смещения относительно значения базового регистра. Адрес (номер) базового регистра чаще всего не указывается. Он известен ЦП. Поэтому способ и называется "неявным". При загрузке программы ОС засылает в базовый регистр (CS в ПЭВМ) адрес начала очередного сегмента, так называемый базовый адрес. Во время исполнения ЦП автоматически формирует исполнительный (физический) адрес, прибавляя к базовому адресу смещение операнда из команды. Такие операнды не надо пересчитывать загрузчику. Для него остаются, в основном, только адресные константы, если они не абсолютные.
3. Явная сегментная адресация. Используется в ЭВМ, где адресное поле операнда содержит пару чисел: номер базового регистра и смещение (ЕС ЭВМ, IBM 360/370 и др.). В этом случае загрузка начала сегмента в соответствующий базовый регистр выполняется программистом (на Ассемблере) или транслятором.
Дата добавления: 2015-10-02; просмотров: 45 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Абсолютный загрузчик | | | Загрузка программ для ЭВМ с явной адресацией |