Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора ЯП.docx
Скачиваний:
4
Добавлен:
11.07.2019
Размер:
112.11 Кб
Скачать
  1. Критерии производительности компиляторов.

Критерии производительности Имеется ряд аспектов производительности компилятора. Достаточно сложно найти компромисс среди всех этих критериев, а кроме того, ряд параметров может остаться не определенным спецификацией компилятора. Например, что важнее — скорость работы компилятора или скорость работы генерируемого им кода. Однако такой подход может не привести к компилятору, который генерирует высококачественный целевой код и имеет простую поддержку. Есть два аспекта переносимости компилятора. Переносимый компилятор может оказаться не настолько эффективен, как компилятор, разрабатываемый для определенной машины, поскольку последний может использовать информацию о целевой машине, которую не может использовать переносимый компилятор.

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

ПОДХОДЫ К РАЗРАБОТКЕ КОМПИЛЯТОРА.

Старый компилятор генерировал недостаточно эффективный код. Среда разработки компилятора По существу, компилятор является просто программой. Среда, в которой эта программа разрабатывается, может повлиять на скорость и надежность реализации компилятора. Не менее важен и язык разработки компилятора. Хотя имеются компиляторы, написанные на языках типа . Если исходный язык представляет собой новый системно. С использованием рассмотренной в предыдущем разделе технологии, компилирование компилятора облегчает его отладку. Существенно облегчить создание эффективного компилятора может инструментарий разработки программного обеспечения, имеющийся в используемой среде программирования. При написании компилятора обычным является разделение всей программы на модули, где каждый модуль может обрабатываться своим способом. Программа, управляющая обработкой таких модулей, — незаменимый помощник создателя компилятора. Чтобы показать, как задача сборки компилятора может быть выполнена с помощью . Двоеточие во второй строке говорит о том, что файл . За такой строкой зависимости могут следовать команды для . Транслятор создается посредством ввода команды . После создания компилятора профайлер может использоваться для определения того, какое время затрачивается при компиляции на решение различных задач. В дополнение к общим инструментам для разработки программного обеспечения, при разработке компиляторов используются специализированные инструменты. В дополнение к генераторам лексических и синтаксических анализаторов, созданы генераторы атрибутных грамматик и генераторов кода, облегчающие создание соответствующих компонентов компилятора. Многие из этих инструментов обеспечивают поиск ошибок в спецификациях компиляторов. По поводу эффективности и удобства генераторов программ при построении компиляторов велись определенные споры . Однако нельзя отрицать тот факт, что хорошо реализованный генератор может оказать неоценимую помощь при разработке надежных . СРЕДА РАЗРАБОТКИ КОМПИЛЯТОРА . Корректный синтаксический анализатор гораздо проще получить при использовании грамматического описания языка и генератора анализаторов, чем при кодировании его вручную. Важным вопросом, однако, является то, насколько корректно эти генераторы работают в связке друг с другом и с другими программами.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]