Реализация алгоритма однопроходного макропроцессора, содержащего опережающие макроопределения
7

 

 

 

 

3. Описание основного алгоритма макропроцессора

 

Алгоритм основного просмотра проверяет каждую строку входного текста. Если в поле команд встретилась псевдооперация «MACRO», все следующее за ней макроопределение запоминается в ближайших свободных ячейках таблицы макроопределений до тех пор, пока не встретилась директива «ENDM». Первая строка макроопределения — строка имени макро. Имя зано­сится в таблицу имен вместе с указателем на первую и последнюю ячейки элемента ТМО, содержащего это определение.

        При обработке основного текста  проверяем мнемонический код операции каждого входного   предложения, не содержится ли имя этого предложения в ТИМ. Если обнару­жена макрокоманда  то процессор устанавливает указатель таблиц макроопределений (ТМО)   на соответствующее  макроопределение, хранящееся в ТМО. Начальное  значение  берется из поля «Индекс ТИМ» соответствующего   элемента таблицы ТМО(нач. адрес).

Чтение производится из ТМО; в процессе чтения текста мак­роопределения из ТМО значения из списка параметров подстав­ляются в макроопределение вместо индексов формальных па­раметров. Чтение предложения ENDМ приводит к пре­кращению расширения и возобновлению просмотра входного файла. Когда встречается псевдокоманда END, расширенный исходный текст передается ассемблеру для дальнейшей обра­ботки.