КАТЕГОРИИ: Архитектура-(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. Массив аргументов Предназначен для хранения имен фактических или формальных параметров макрокоманды или макроопределения. Представляет собой массив строк. Алгоритм однопросмотрового макропроцессора основан на изъятии из текста программы макроопределения, записи его в массив макроопределений с заменой формальных параметров в тексте на их номера, на извлечении макроопределения из массива и вставки его на место макрокоманды с заменой номеров на фактические параметры. Алгоритм:
Запись параметров оператора в массив аргументов. Добавление в таблицу макрокоманд строки с именем макроопределения и номером первой свободной строки в массиве макроопределений. Копирование всех строк из буфера или файла до соответствующего ENDM в массив макроопределений с заменой формальных параметров на их номера в массиве аргументов. Запись в последнюю строку таблицы макрокоманд номера последней использованной строки массива макроопределений. Переход к п.2.
Запись параметров макрокоманды в массиве аргументов. Определение по таблице макрокоманд номера первой и последней строки макрорасширения. Вставка на место макрокоманды в буфер текста из массива макроопределения с заменой номеров параметров на значения элементов из массива аргументов. Переход к п.2.
Приведенный алгоритм функционирования макропроцессора позволяет обрабатывать вложенные макроопределения. Но макроопределением является только внешнее макроопределение. Все внутренние являются просто текстом. Для того, чтобы они стали макроопределениями, нужно сначала с помощью макрокоманды вставить в текст программы текущее макроопределение и при его обработке macro следующего уровня станет макроопределением.
Дата добавления: 2014-01-15; Просмотров: 1354; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |