Читайте также:
|
|
Настраивающий загрузчик по двоичному коду программы, полученному после трансляции, не может отличить команды от данных. Поэтому для данного метода в загрузочную программу вносят дополнительную информацию - биты настройки на каждое поле, указывающие, является ли поле относительным. Транслятор вносит в загрузочную программу эти биты настройки, а в соответствующее поле - относительный адрес от начала программы. Гипотетический упрощенный формат загрузочного кода представлен на рис 6.4.
Количество полей |
Биты настройки |
Двоичный код в заданном количестве полей |
Рис. 6.4 |
Загрузочный и машинный код некоторой программы в приведенном формате представлены на рис. 6.5. Нетрудно заметить, что поля с нулевыми битами настройки определяют константы, поля со смешанными битами - команду и ее операнды, а поля с полностью единичным битом - адресную константу (последняя строка на рисунке).
Загрузочный код | Машинный код | |||
Кол. полей | Биты настройки | Двоичный код | Адрес | Код |
12 17 | ||||
12 17 15 | ||||
12 17 | ||||
13 17 13 | ||||
03 18 | ||||
07 99 | ||||
00 99 | ||||
Рис. 6.5 |
Настраивающий загрузчик, получив от монитора работ адрес, где располагать программу, начинает считывание записей загрузочного кода. Адрес начала программы в ОП считается за константу смещения. Эта константа смещения прибавляется к значению каждого поля, бит настройки который равен 1. Для нашей загрузочной программы получена машинная программа, расположенная с адреса 40 (значения 57, 55, 53 представляют адреса операндов).
Карта настройки включает такое количество битов, сколько всего полей имеется в настраиваемой части текста. Для поля в 1 байт, что часто бывает, карта настройки в 8 раз меньше. Это упрощенный вариант, так как поля могут быть разной длины. В реальных ОС карта настройки содержит кроме бита настройки и код длины поля, например, 00 - 1 байт, 01 - 2 байта, 10 - 3 байта, 11 - 4 байта. Тогда на каждое поле как минимум приходится по 3 бита: код длины и бит настройки (характерно в ОС ЕС).
Рассмотрим алгоритм настраивающего загрузчика для явной адресации. Для упрощения возьмем случай, когда поля имеют одинаковую длину. Загрузчик, получив от монитора адрес для размещения программы, читает первую запись загрузочного кода и настраивает ее текст. Адрес для размещения следующего сегмента загрузчик вычисляет сам, зная адрес окончания предыдущего настраиваемого текста. Это будет адрес размещения карты настройки предыдущей записи, т.е. карты будут перекрыты следующими записями (рис. 6.7).
Дата добавления: 2015-10-02; просмотров: 59 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Настраивающий загрузчик | | | Загрузка программ для ЭВМ с неявной сегментной адресацией |