Главная » Просмотр файлов » И.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования

И.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования (1119414), страница 7

Файл №1119414 И.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования (И.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования) 7 страницаИ.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования (1119414) страница 72019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 7)

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

Например, не могут интерпретироваться таким способомпрограммы на языках программирования, если эти языки допускают использованиенекоторых объектов прежде, чем в тексте встретится описание этих объектов.Скорость выполнения программы интерпретаторами во много раз меньше, чемпри использовании компиляторов. Кроме того, при интерпретации исходная программадолжна подвергаться разбору всякий раз при ее выполнении, а при компиляции разборвыполняется только один раз, после чего используется уже не исходный текст, аобъектный файл с готовой программой. Однако интерпретаторы обладают26независимостью от архитектуры целевой вычислительной системы, в то время, как прикомпиляции готовые программы всегда ориентированы на эту архитектуру.Разнородность оборудования, с которой постоянно приходится сталкиваться вглобальных информационных сетях, например, в сети Интернет, препятствуетиспользованию компиляторов, но способствует развитию систем, интерпретирующихтексты исходных программ, либо систем с двойной технологией – компиляции иинтерпретации, в которых, в зависимости от требований пользователя исходнаяпрограммалибокомпилируется,либоинтерпретируется.Примерамиинтерпретируемых языков являются язык JavaScript , а также язык для решения задачискусственного интелллекта ПЛЭНЕР.

Смешанная стратегия трансляции применяется всистемах, работающих в сети Интернет, программы для которых пишутся на языкеJava.3.3. Компилятор как основной компонент системы программированияНа начальном этапе развития теории построения компиляторов их сравнивалимежду собой по количеству проходов по тексту исходной программы, которыевыполнялись при компиляции программ.

Это количество может меняться от одного донескольких десятков, на их количество, кроме свойств исходного языка, могут влиятьтакже свойства операционного окружения, в котором работает компилятор. Проход –это процесс последовательного чтения компилятором данных из внешней памяти, ихобработки и записи результата во внешнюю память. Во время одного прохода можетвыполняться сразу несколько фаз компиляции, но случается, что одна фаза компиляции(например, синтаксический анализ) выполняется за несколько проходов.В настоящее время практически все компиляторы языков программированияпросматривают сам исходный текст только один раз. Если же такого просмотраоказывается недостаточно, а его часто оказывается недостаточно, организуютсядополнительные просмотры отдельных фрагментов программы, причем выполняютсяони не по исходному тексту, а по его внутреннему представлению.

Чтобы построитьтакое внутреннее представление программы, в компиляторе строятся сложныетаблицы, в которые заносятся сведения, извлекаемые из текста программы на первом иединственном его просмотре.3.3.1. Общая схема работы компилятораНа следующей странице изображена схема работы компилятора языкапрограммирования. Сплошные стрелки на этом рисунке указывают порядок работыкомпилятора, а пунктирные линии – потоки информации.3.3.1.1. Основные компоненты компилятора и фазы компиляцииИнформационные таблицы. При анализе программы из имеющихся в нейописаний, заголовков процедур, блоков, циклов и других структурных операторовизвлекается информация, которая должна сохраняться для использования напоследующих фазах компиляции.

Вся эта информация размещается в информационныхтаблицах компилятора. Если при просмотре программы встречается некоторыйидентификатор, в таблицах должны быть сведения о том, как он был описан и какиспользовался в программе. Конкретная информация зависит от исходного языка, отобъектного языка и сложности транслятора. Кроме таблицы идентификаторов (“имен”)обычно строится таблица констант, в которую включаются все константы,использованные в программе, и заносятся их адреса в объектной программе.27Компиляторязыка программированияТаблицыкомпилятораНачальные установкиФазы анализа программИсходнаяпрограммаТекстЛексический анализ(сканер)ЛексемыСинтаксический исемантический анализ(контроль контекстныхусловий)Анализ и локализацияобнаруженных ошибокВнутреннеепредставлениеТаблицыслужебныхидентификаторовТаблицаконстантТаблицаименФазы оптимизации программВнутреннеепредставлениеФазы синтеза программТаблицапроцедурТаблицаблоковРаспределение памятиСообщенияоб ошибкахВнутреннее представлениеТаблицацикловРаспределение регистровВнутреннее представлениеОбъектнаяпрограммаТекст или кодГенерация команд имашинно-зависимаяоптимизацияМножестводругихтаблицНачальные установки.

Перед началом работы с программой компиляторунеобходимо провести инициирующие мероприятия. К таковым относятся ввод иобработка режимов запуска компилятора и первичное заполнение таблиц исходнойинформацией.Фазы анализа программ. На этапе анализа в компиляторе выполняетсяраспознавание текста исходной программы и заполнение информационных таблиц. Врезультате формируется некоторое внутреннее представление программы, понятное28следующим фазам компиляции. Получая на вход исходную программу какпоследовательность символов входного языка (“цепочку”), компилятор долженпроверить, принадлежит ли она входному языку, а также определить правила, покоторым эта последовательность строилась. Анализ часто подразделяется налексический, синтаксический и семантический анализ.Лексический анализатор (сканер). Основная задача лексического анализатора –просмотреть весь текст исходной программы и выделить в нем лексемы (минимальныелексические единицы или элементы текста программы, обладающие смыслом в рамкахданного языка).

В обычных языках программирования лексемами являются числа(десятичные целые, вещественные), идентификаторы, служебные слова, разделители.Задачей лексического анализатора является замена разнообразных элементов текстастандартно выглядящими лексемами, которые в дальнейшем будет легче обрабатыватьв других частях компилятора. Лексический анализ сопровождается исключениемнезначащих фрагментов текстов программ, например, комментариев. Для тех языков, вкоторых имеются макросредства, дополнительно выполняется расширениемакровызовов. Подробнее задачи и проблемы лексического анализа рассматриваются впособии “Формальные грамматики и языки.

Элементы теории трансляции”.Синтаксический и семантический анализаторы. Программа должна бытьпроверена на синтаксическую и семантическую правильность (должно быть проверенособлюдение контекстных условий), разделена на составные части, для каждой изкоторых должно быть сформировано внутреннее представление.

В таблицытранслятора должна быть занесена вся информация, которую можно извлечь изобрабатываемой программы. Подробнее задачи и проблемы синтаксического исемантического анализа рассматриваются в разделе 3.3.2 и в пособии “Формальныеграмматики и языки. Элементы теории трансляции”.Внутреннее представление исходной программы. Внутреннее представлениеисходной программы в компиляторе в наибольшей степени зависит от той обработки,которой должна подвергнуться программа. Некоторые виды внутреннегопредставления больше подходят для фиксации структуры компилируемой программы,другие ориентированы на проведение оптимизирующих преобразований, третьинаиболее удобны при синтезе (генерации) результата компиляции. Более подробновнутреннее представление программ в компиляторах рассматривается в разделе 3.3.3 ив пособии “Формальные грамматики и языки.

Элементы теории трансляции”.Фазы оптимизации программ. Оптимизация – важнейшая задача компилятора.Языки высокого уровня, не связанные напрямую с особенностями конкретнойаппаратуры, на которой должны выполняться программы, без оптимизации не могутиспользоваться для создания эффективных программ.

Оптимизация программ можетпроводиться в интересах различных свойств программ. Обычно используют двестратегии оптимизации: оптимизация в целях повышения скорости работы программыи оптимизация в целях уменьшения размеров программ. Методы, используемые приреализации этих стратегий часто противоположны, хотя некоторые из них близки другк другу. Более подробно проблемы оптимизации программ в компиляторахрассматриваются в разделе 3.3.4.Фазы синтеза программ. Второй главной работой компилятора являетсягенерация результирующей программы. На выходе компилятора должна бытьпостроена последовательность символов (“цепочка”) выходного языка по темправилам, которые предлагаются языком машинных команд или языком ассемблера. В29случае машинных команд распознавателем этой последовательности символов будетвыступать целевая вычислительная система, для которой создается результирующаяпрограмма.Распределение памяти и регистров.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6480
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее