Учебники

Дизайн компилятора

Что такое компилятор?

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

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

На этом тренинге вы узнаете

Особенности компиляторов

  • правильность
  • Скорость компиляции
  • Сохраняйте правильное значение кода
  • Скорость целевого кода
  • Распознать легальные и нелегальные программные конструкции
  • Хорошие сообщения об ошибках / обработка
  • Помощь по отладке кода

Типы Компилятора

  • Однопроходные компиляторы
  • Двухпроходные компиляторы
  • Многопроходные компиляторы

Однопроходной компилятор

За один проход исходный код компилятора напрямую преобразуется в машинный код. Например, язык Паскаль.

Двухпроходный компилятор

Двухпроходный компилятор состоит из двух разделов, а именно.

  1. Внешний интерфейс: он отображает юридический код в промежуточное представительство (IR).
  2. Back end: он отображает ИК на целевой машине

Метод двухпроходного компилятора также упрощает процесс ретаргетинга. Это также позволяет несколько внешних интерфейсов.

Многопроходные компиляторы

Многопроходный компилятор обрабатывает исходный код или синтаксическое дерево программы несколько раз. Он разделил большую программу на несколько маленьких программ и обработал их. Он разрабатывает несколько промежуточных кодов. Все эти мультипроцессоры принимают выходные данные предыдущей фазы. Так что это требует меньше памяти. Он также известен как «широкий компилятор».

Задачи компилятора

Основные задачи, выполняемые компилятором:

  • Разбивает исходную программу на части и накладывает на них грамматическую структуру
  • Позволяет построить нужную целевую программу из промежуточного представления, а также создать таблицу символов
  • Компилирует исходный код и обнаруживает в нем ошибки
  • Управлять хранением всех переменных и кодов.
  • Поддержка отдельной компиляции
  • Читайте, анализируйте всю программу и переводите в семантически эквивалентный
  • Перевод исходного кода в объектный код в зависимости от типа машины

История компилятора

Важные ориентиры истории компилятора:

  • Слово «компилятор» было впервые использовано в начале 1950-х годов Грейс Мюррей Хоппер
  • Первый компилятор был собран Джоном Бакумом и его группой в период с 1954 по 1957 год в IBM
  • COBOL был первым языком программирования, который был скомпилирован на нескольких платформах в 1960 году
  • Изучение проблем сканирования и синтаксического анализа проводилось в 1960-х и 1970-х годах для обеспечения полного решения.

Шаги для языковых систем обработки

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

  • Препроцессор : препроцессор считается частью компилятора. Это инструмент, который производит ввод для компилятора. Он занимается обработкой макросов, расширением, расширением языка и т. Д.
  • Интерпретатор : Интерпретатор похож на Компилятор, который переводит язык высокого уровня на машинный язык низкого уровня. Основное различие между ними заключается в том, что интерпретатор читает и преобразует код построчно. Компилятор считывает весь код сразу и создает машинный код.
  • Ассемблер : переводит код ассемблера на машинно-понятный язык. Выходной результат ассемблера известен как объектный файл, который представляет собой комбинацию машинных инструкций, а также данных, необходимых для хранения этих инструкций в памяти.
  • Компоновщик : компоновщик помогает связывать и объединять различные объектные файлы для создания исполняемого файла. Все эти файлы могли быть скомпилированы с отдельными ассемблерами. Основная задача компоновщика – найти вызываемые модули в программе и найти место в памяти, где хранятся все модули.
  • Загрузчик : Загрузчик является частью ОС, которая выполняет задачи загрузки исполняемых файлов в память и запуска их. Он также рассчитывает размер программы, которая создает дополнительное пространство памяти.
  • Кросс-компилятор : кросс-компилятор – это платформа, которая помогает вам генерировать исполняемый код.
  • Компилятор исходного кода : Компилятор исходного кода – это термин, который используется, когда исходный код одного языка программирования переводится в источник другого языка.

Инструменты компилятора

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

Эти инструменты используют определенный язык или алгоритм для определения и реализации компонента компилятора.

  • Генераторы сканера : этот инструмент принимает регулярные выражения в качестве входных данных. Например, LEX для операционной системы Unix.
  • Синтаксически-ориентированные механизмы перевода . Эти программные средства предлагают промежуточный код с использованием дерева разбора. Цель состоит в том, чтобы связать один или несколько переводов с каждым узлом дерева разбора.
  • Генераторы синтаксического анализатора. Генератор синтаксического анализатора принимает грамматику в качестве входных данных и автоматически генерирует исходный код, который может анализировать потоки символов с помощью грамматики.
  • Автоматические генераторы кода : принимает промежуточный код и преобразует его в машинный язык
  • Механизмы потока данных : этот инструмент полезен для оптимизации кода. Здесь информация предоставляется пользователем, а промежуточный код сравнивается для анализа любого отношения. Это также известно как анализ потока данных. Это поможет вам узнать, как значения передаются из одной части программы в другую.

Зачем использовать компилятор?

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

Применение компиляторов

  • Конструкция компилятора помогает полной реализации языков программирования высокого уровня
  • Оптимизация поддержки параллелизма компьютерной архитектуры
  • Проектирование новых иерархий памяти машин
  • Широко используется для перевода программ
  • Используется с другими инструментами повышения производительности программного обеспечения

Резюме

  • Компилятор – это компьютерная программа, которая помогает вам преобразовывать исходный код, написанный на языке высокого уровня, в машинный язык низкого уровня
  • Правильность, скорость компиляции, сохранение правильного значения кода – вот некоторые важные особенности дизайна компилятора
  • Компиляторы разделены на три части: 1) однопроходные компиляторы 2) двухпроходные компиляторы и 3) многопроходные компиляторы
  • Слово «компилятор» было впервые использовано в начале 1950-х годов Грейс Мюррей Хоппер
  • Шаги для системы обработки языка: препроцессор, интерпретатор, ассемблер, компоновщик / загрузчик
  • Важными инструментами построения компилятора являются: 1) Генераторы сканеров, 2) Синтаксис-3) Механизмы направленного перевода, 4) Генераторы парсеров, 5) Автоматические генераторы кода
  • Основная задача компилятора – проверить всю программу, чтобы не было синтаксических или семантических ошибок.

Изучите дизайн компилятора за 3 дня