Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Реализация внутри Ассемблера




Описание алгоритма

Алгоритм

Однопросмотровый макроассемблер

Начало алгоритма

МТДС = 0

МНТС = 0

ФЛАГ ВЫХОДА = 0

цикл пока!(ФЛАГ ВЫХОДА) {

чтение следующей строки ВХТ

НАЙДЕНО = поиск кода в МНТ

если (НАЙДЕНО) {

МДИ = 1

УКАЗАТЕЛЬ = индекс из МНТ

Заполнение списка параметров АЛА

цикл {

УКАЗАТЕЛЬ ++

чтение след. строки из МДТ

подстановка параметров

вставка во ВХТ

} пока!(операция MEND)

иначе если!(операция MACRO) {

вывод строки в ВЫХТ1

если (операция END) ФЛАГ ВЫХОДА = 1

}

иначе {

чтение идентификатора

запись имени и индекса в МНТ

МНТС ++

приготовить массив списка АЛА

запись имени в МДТ

МДТС ++

цикл {

чтение следующей строки ВХТ

подстановка индекса операторов

добавление в МДТ

МДТС ++

} пока!(операция MEND)

}

}

конец алгоритма

 

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

Кроме того, скорость работы современных процессоров настолько велика, что позволяет производить прямые вставки и удаления в массивах данных средней величины (скажем, до 64 килобайт) в режиме реального времени.

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

:

 

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

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

Например, возможно объединение таблиц имен макросов и имен кода операции; специальный признак может указывать на то макро это или встроенная операция.

Основные преимущества включения макропроцессора в первый просмотр состоят в следующем:

· Многие функции не надо реализовывать дважды (например, функции ввода-вывода, проверки на тип, и т.п.)

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

· У программиста появляются дополнительные возможности по совмещению средств Ассемблера (например, команды EUQ) совместно с макрокомандами.

Основные недостатки:

· Программа должна требовать больше оперативной памяти, что критично на некоторых типах ЭВМ, не имеющих много оперативной памяти.

· Реализация подобного типа задачи может оказаться на порядок сложнее, чем отдельная реализация Ассемблера и макропроцессора.

Отдельно от рассмотрения реализации аппарата макросредств в Ассемблер лежит рассмотрение дополнительного просмотра, используемого многими программами для выявления определенных характеристик исходной программы, таких как типы данных.

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

 


 




Поделиться с друзьями:


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


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



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




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