Современный компилятор - Большая Энциклопедия Нефти и Газа, статья, страница 1
Пока твой друг восторженно держит тебя за обе руки, ты в безопасности, потому что в этот момент тебе видны обе его. Законы Мерфи (еще...)

Современный компилятор

Cтраница 1


Современные компиляторы должны обеспечивать в полном объеме те услуги, которые требуются сейчас программистам.  [1]

Для современных компиляторов и операционных систем эти недостатки невелики и обычно - окупаются сокращением стоимости разработки и сопровождения.  [2]

В современных компиляторах используются оба этих подхода, но в любом случае лексический анализ отделяется от синтаксического и семантического. Основная причина заключается в том, что синтаксис лексических анализаторов может описываться очень простыми грамматиками ( обычно регулярными грамматиками), и если их функции выделены, то могут быть применены более эффективные методы грамматического разбора. Здесь выделение лексического анализа позволяет иметь один общий синтаксический анализатор, а для подключения любого конкретного представления требуется только соответствующий лексический анализатор: Когда язык управления заданиями ( разд.  [3]

Однако большинство современных компиляторов могут использовать с одними и теми же логическими операциями несколько различных типов данных.  [4]

Второе распределение обычно делается во многих современных компиляторах. Программы распределения первого типа написаны для компилятора с Фортрана. Они допускают, например, динамическое распределение образа перфокарты.  [5]

Мне неприятно акцентировать внимание на необходимости приобретения мощного оборудования и современных компиляторов. Вообще-то говоря, я совсем не сдвинут на всех новомодных згстремлениях. Однако Windov / s действительно находится на переднем крае суцгеотруюшгк компьютерной технологии, так что ры должны быть готовы вложить достаточно средств, прежде чем сможете сесть за эту непростую игру.  [6]

Современные компиляторы обнаруживают все синтаксические и некоторую часть семантических ошибок и выдают диагностические сообщения об ошибках.  [7]

Мы опять выбираем общий путь представления этой фазы, чтобы показать и результат генерации, и некоторые методы машинно-зависимой оптимизации. Большинство современных компиляторов следуют описанной здесь методике. Возвращаясь к рис. 8.13, отметим, что фаза генерации использует матрицу в качестве входной информации, а также кодовые продукции ( макроопределения), которые определяют операции, появляющиеся в матрице. Она, кроме того, обращается к таблице идентификаторов и таблице литералов для генерирования соответствующих адресов и преобразований типов данных.  [8]

Именно современная техника компиляции позволяет эффективно использовать преимущества большого регистрового файла, конвейерной организации и большей скорости выполнения команд. Современные компиляторы используют также преимущества другой оптимизационной техники для повышения производительности, обычно применяемой в процессорах RISC: реализацию задержанных переходов и суперскалярной обработки, позволяющей в один и тот же момент времени выдавать на выполнение несколько команд.  [9]

Помимо того, что алгоритм, разработанный в данном разделе для вычисления инфиксных выражений, предоставил два разных примера использования абстракции стека, он и сам по себе является упражнением по абстракциям. Во-вторых, для интерпретации и вычисления этого выражения имитируется работа абстрактной машины, функционирующей на основе стека. В целях эффективности и мобильности эта же схема работы наследуется многими современными компиляторами: задача компиляции программы на C для некоторого компьютера разбивается на две задачи, которые концентрируются вокруг промежуточного представления. Поэтому задача трансляции программы отделяется от задачи выполнения этой программы, точно так же как это делалось в данном разделе. В разделе 5.7 будет показано родственное, но другое промежуточное представление.  [10]

Сокращение трудоемкости программирования и отладки сложных алгоритмов может быть достигнуто путем программирования на языках высокого уровня. Функцию перевода программы с языка высокого уровня в машинные коды МП конкретного типа выполняет специальная программа - компилятор. Переход к языкам высокого уровня лишает программиста доступа ко всем аппаратным средствам МП, что ухудшает качество программы. Современные компиляторы обладают свойствами оптимизации программ, однако они не достигают уровня высококвалифицированных программистов.  [11]

Временные оценки же необходимо получать для конкретного компилятора и языка ассемблера целевого процессора. Этим объясняется необходимость моделирования процесса компиляции, ассемблирования и функционирования процессоров целевой вычислительной системы. В этом и состоит основная трудность реализации статического анализа фрагментов программы. Современные компиляторы поддерживают развитые механизмы оптимизации кода, например, выделение и исключение общих подвыражений, продвижение констант, распределение регистров. Кроме того, и компиляторы, и ассемблеры отдельно транслируют каждую единицу исходного кода. Все это может привести к тому, что моделирование компиляции отдельных фрагментов кода станет неадекватным реальному процессу компиляции всей программы. Конечно же, задача упрощается при наличии кросс-компилятора для целевой системы, который далеко не всегда доступен.  [12]

Одним из существенных технических решений данного этапа разработки являются обоснование и выбор языков программирования. В настоящее время выработана определенная технология проведения работы. Все шире используются языки высокого уровня для описания компонентов системы. Современные компиляторы имеют достаточно высокие показатели скорости трансляции и характеристики эффективности получаемых программ.  [13]

Каждую инструкцию необходимо подвергнуть исследованию: является ли она необходимой. Существует ли более эффективный способ выполнить такую же задачу. Некоторые программисты считают, что автоматические инструменты, содержащиеся в современных компиляторах, могут создавать наилучший машинный код; другие утверждают, что наилучшим способом является написание внутренних циклов вручную на машинном языке, или ассемблере. Обычно мы будем останавливаться, доходя до рассмотрения оптимизации на таком уровне, хотя иногда будем указывать, сколько машинных инструкций требуется для выполнения определенных операций. Это потребуется для того, чтобы понять, почему на практике одни алгоритмы могут оказаться быстрее других.  [14]

Из сказанного выше не следует, что автор считает бейсик идеальным языком программирования. В качестве средства массового обучения была бы более понятна отечественная версия алгоритмического языка. Не так уж и трудно предусмотреть в современных компиляторах и интерпретаторах двуязычные таблицы служебных слов и текстовых сообщений. Однако среди доступных нам сегодня систем программирования бейсик наиболее удобен для начального освоения средств вычислительной техники непрофессиональным пользователем.  [15]



Страницы:      1