Разработка общего ПО
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: титульный лист реферата, мировая война реферат
| Добавил(а) на сайт: Jov.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
ОДНОПРОСМОТРОВЫЙ АЛГОРИТМ
Предположим, что мы допускаем реализацию макроопределения внутри макроопределений. Основная проблема здесь заключена в том, что внутреннее макро определено только после того, как выполнен вызов внешнего. Для обеспечения использования внутреннего макро нам придется повторять как просмотр обработки макроопределений, так и просмотр обработки макрокоманд. Однако существует и еще одно решение, которое позволяет произвести распознавание и расширение в один просмотр.
Рассмотрим аналогию с ассемблером. Макроопределение должно обрабатываться до обработки макрокоманд, поскольку макро должны быть определены для процессора раньше, чем макрокоманды обращения к ним. Однако, если мы наложим ограничение, что каждое макроопределение должно быть определено до того, как произойдет обращение к нему, мы устраним основное препятствие для однопросмотровой обработки. Заметим, что то же самое может быть верно и для символических имен в ассемблере, но такое требование было бы неоправданным ограничением для программиста. В случае же макрорасширения может быть вполне естественно потребовать, чтобы объявления макро предшествовали вызовам. Это не накладывает очень существенных ограничений на использование аппарата макрокоманд. Этот механизм даже не запрещает обращение макро к самому себе, поскольку обращение ведется в тот момент, когда имя макроса уже определено. Расширение же макроса идет не в процессе разбора макроса, а в процессе последующего вызова.
Предложенный ниже алгоритм объединяет два вышеприведенных алгоритма для двупросмотрового макроассемблера в один.
АЛГОРИТМ
Однопросмотровый макроассемблер
Начало алгоритма
МТДС = 0
МНТС = 0
ФЛАГ ВЫХОДА = 0
цикл пока !(ФЛАГ ВЫХОДА) {
чтение следующей строки ВХТ
НАЙДЕНО = поиск кода в МНТ
если (НАЙДЕНО) {
МДИ = 1
УКАЗАТЕЛЬ = индекс из МНТ
Заполнение списка параметров АЛА
цикл {
УКАЗАТЕЛЬ ++
чтение след. строки из МДТ
подстановка параметров
вставка во ВХТ
} пока !(операция MEND)
иначе если !(операция MACRO) {
вывод строки в ВЫХТ1
если (операция END) ФЛАГ ВЫХОДА = 1
}
иначе {
чтение идентификатора
запись имени и индекса в МНТ
МНТС ++
приготовить массив списка АЛА
запись имени в МДТ
МДТС ++
цикл {
чтение следующей строки ВХТ
подстановка индекса операторов
добавление в МДТ
МДТС ++
} пока !(операция MEND)
}
}
конец алгоритма
ОПИСАНИЕ АЛГОРИТМА
данный алгоритм является упрощением алгоритма приведенного в [1], глава 4.3.2. Различие состоит в том, что современные средства интеллектуализации программирования дают нам возможность осуществлять вставки и удаления из крупных массивов с минимальными затратами процессорного времени, что было невозможно при использовании перфокарт. Кроме того, скорость работы современных процессоров настолько велика, что позволяет производить прямые вставки и удаления в массивах данных средней величины (скажем, до 64 килобайт) в режиме реального времени. Таким образом, расширение исходного макроса может быть напрямую вставлено в массив исходного текста и обработано в расширенном виде. Такая технология позволяет значительно упростить алгоритм обработки макроязыка.
РЕАЛИЗАЦИЯ ВНУТРИ АССЕМБЛЕРА
Макропроцессор, описанный нами предназначался для обработки текста в режиме препроцессора, то-есть он выполнял полный просмотр входного текста, до того, как передать управление ассемблеру. Но макропроцессор также может быть реализован внутри первого прохода ассемблера. Такая реализация позволяет исключить промежуточные файлы, и позволяет достичь на порядок большей интеграции макропроцессора и ассемблера путем объединения сходных функций. Например, возможно объединение таблиц имен макросов и имен кода операции; специальный признак может указывать на то макро это или встроенная операция.
Основные преимущества включения макропроцессора в первый просмотр состоят в следующем:
Многие функции не надо реализовывать дважды (например, функции ввода-вывода, проверки на тип, и.т.п.)
Рекомендуем скачать другие рефераты по теме: бесплатно рассказы, предмет культурологии.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата