Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Макропроцессор

Многопросмотровый ассемблер

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

В однопросмотровом ассемблере ссылка должна быть определена до использования.

В многопросмотровом ассемблере используется n просмотров для определения значения переменных и один последний просмотр для генерации кода программы.

При первом просмотре производится формирование ТСИ. При этом в таблицу записываются переменные, значения которых определены и флаг наличия неопределенных переменных. Если после (?????)

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

Макропроцессор (макрогенератор) – предназначен для текстовой замены фрагментов текста программы с учетом параметров.

Первые макропроцессоры были разработаны для ассемблеров, чтобы реализовать механизм макрокоманд. Вновь макропроцессор появился в языке Си.

Макропроцессор может быть разработан по одно- или многопросмотровой схеме. В однопросмотровом макропроцессоре макроопределение обязательно следует до макрокоманды. В многопросмотровом может быть наоборот. Наиболее широкое распространение получили однопросмотровые макропроцессоры.

В процессе функционирования макропроцессор использует три структуры данных:

1. Таблица макрокоманд

Предназначена для хранения данных о встретившихся макроопределениях (т.е. список допустимых макрокоманд). Содержит поля:

─ имя макроопределения;

─ указатель на первую строку и на последнюю строку текста макроопределения в массиве макроопределений.

2. Таблица макроопределений (массив)

Предназначена для хранения текста макроопределения (т.е. по структуре это массив строк).

3. Массив аргументов

Предназначен для хранения имен фактических или формальных параметров макрокоманды или макроопределения. Представляет собой массив строк.

Алгоритм однопросмотрового макропроцессора основан на изъятии из текста программы макроопределения, записи его в массив макроопределений с заменой формальных параметров в тексте на их номера, на извлечении макроопределения из массива и вставки его на место макрокоманды с заменой номеров на фактические параметры.

Алгоритм:

  1. Инициализация структур данных (очистка их).
  2. Чтение очередного оператора из буфера вставки. Если буфер пустой, то чтение очередной строки из входного файла.
  3. Если очередной оператор macro, то обработка макроопределения

Запись параметров оператора в массив аргументов.

Добавление в таблицу макрокоманд строки с именем макроопределения и номером первой свободной строки в массиве макроопределений.

Копирование всех строк из буфера или файла до соответствующего ENDM в массив макроопределений с заменой формальных параметров на их номера в массиве аргументов.

Запись в последнюю строку таблицы макрокоманд номера последней использованной строки массива макроопределений. Переход к п.2.

  1. Если текущий оператор – макрокоманда, то формирование макрорасширения по макрокоманде и макроопределению.

Запись параметров макрокоманды в массиве аргументов.

Определение по таблице макрокоманд номера первой и последней строки макрорасширения.

Вставка на место макрокоманды в буфер текста из массива макроопределения с заменой номеров параметров на значения элементов из массива аргументов.

Переход к п.2.

  1. Запись текущей строки (оператора) в выходной поток. Если оператор не равен END, то к п.2.
  2. Конец.

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

<== предыдущая лекция | следующая лекция ==>
Однопросмотровый ассемблер | Страничная память
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 1306; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.