Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
История информационных технологий I.doc
Скачиваний:
0
Добавлен:
04.12.2019
Размер:
8.02 Mб
Скачать

Программы - загрузчики

Назначение загрузчика определяется его именем. Он загружает программу в оперативную память машины. Различаются три типа загрузчиков.: двоичные, настраивающие и связывающие.

Двоичный загрузчик загружает машинную программу, записанную в двоичном виде относительно фиксированных адресов, с какого-либо внешнего устройства..

Настраивающий загрузчик получает программу в перемещаемой двоичной форме (записанную в относительных адресах) вместе с информацией о настройке ее по месту и размещает ее в памяти, предварительно настроив относительные адреса.

Связывающий загрузчик получает набор объектных модулей, записанных в двоично-символьной форме, и загружает их в оперативную память как единую программу, заполнив перекрестные ссылки между ними и настроив их по месту.

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

Макросредства

Часто случается, что одна и та же группа команд с небольшими изменениями встречается в нескольких местах программы. Для того, чтобы при составлении программы многократно не переписывать один и тот же (или, почти один и тот же) текст был изобретен аппарат макросов - макрокоманд определяемых пользователем.

Макроопределение служит для конструирования пользователем своей собственной макрокоманды, более крупной, по сравнению с машинной. Макроопределение состоит из заголовка и тела.

Заголовок макроопределения представляет собой предложение вида:

<имя макро>:Макро,<список формальных параметров>

Макро - это псевдокоманда ассемблера, сообщающая ему, что данное предложение является заголовком макроопределения. Имя макро используется для последующих ссылок на это макроопределение, а список формальных параметров определяет каналы связи макроопределения с основной программой.

Тело макроопределения, которое следует за заголовком, представляет собой фрагмент обычной автокодной программы - именно он и определяет существо вводимой макрооперации. Следом за телом следует псевдокоманда Конм конца макроопределения.

Приведем пример макроопределения, которое вводит в употребление команду нахождения наибольшего из двух значений: z=max(x,y):

Мах2: макро, X,Y,Z; заголовок макроопределения

Пересылка X,Z; тело

Вычитание X,Y; тело

Передача_управления КОНМ; тело

Пересылка Y,Z; тело

Конм; признак конца макроопределения

В теле макрокоманды программируется априорная пересылка в ячейку результата Z содержимого ячейки X. Затем производится сравнение содержимого X и содержимого Y, и если Y>X реализуется пересылка содержимого ячейки Y в ячейку результата Z. Существенно, что обработка данных в теле макроопределения определяется вне зависимости от его использования относительно формальных параметров.

Теперь программист может использовать это макро в своей программе, указав его имя и список фактических параметров (макровызов).

Так, с использованием данного ранее макроопределения для вычисления максимума двух чисел, можно записать такую макропрограмму:

.............................

L: МАХ2, A,B,C;

............................

M: MAX2, U,V,W;

............................

Предполагается, что перед запуском ассемблера будет использоваться макрогенератор, который в процессе просмотра макропрограммы каждый раз, когда встретит макровызов, будет осуществлять макроподстановку. Т.е. в процессе макрогенерации каждый макровызов будет заменен телом соответствующего макроопределения. Причем, имена формальных параметров будут заменены именами фактических параметров. В частности, приведенный выше фрагмент макропрограммы после макроподстановки будет иметь вид обычной автокодной программы:

................................

L:Пересылка A,C;

Вычитание A,B;

Перед.упр. L1;

Пересылка B,C;

L1:...............................

M:Пересылка U,W;

Вычитание U,V;

Перед.упр. М1;

Пересылка V,W;

M1:..............................

После работы макрогенератора запускается обычный ассемблер, который формирует объектный модуль.

Возможна другая схема обработки макропрограммы, когда макроассемблер совмещает в себе функции макрогенератора и обычного ассемблера.

Таким образом, аппарат макросов позволяет пользователю расширить базовый язык автокодирования за счет введения проблемно - ориентированных макрокоманд и, тем самым, сделать его более удобным для применения.

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