В настоящее время, с активным развитием языков программирования высокого уровня, все большую роль начинают играть так называемые компиляторы.
Компилятор − это специальная программа, которая переводит текст программы, написанный на языке программирования, в набор машинных кодов, понятных для компьютера.
Компиляторы составляют существенную часть программного обеспечения ЭВМ. Это связано с тем, что языки высокого уровня стали основным средством разработки программ. Только очень незначительная часть программного обеспечения, требующая особой эффективности, обходится без компиляторов и программируется при помощи ассемблеров
Компьютер, для которого производится компиляция, называется целевой машиной.
Входной информацией для компилятора является описание алгоритма или программа на языке программирования.
На выходе компилятора – эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код).
Классификация компиляторов в соответствии с этапами компиляции
Одни компиляторы непосредственно преобразуют высокоуровневый исходный код в машинный код, а некоторые − сначала преобразуют высокоуровневый исходный код в промежуточное представление перед окончательным преобразованием в машинный код.
В соответствии с данным критерием классификации можно выделить два основных типа компиляторов:
- Однопроходной компилятор − это компилятор, который проходит через части каждого блока компиляции только один раз, немедленно переводя каждую часть в конечный машинный код.
- Двухпроходной/многопроходной компилятор − это тип компилятора, который два и более раз обрабатывает исходный код или абстрактное синтаксическое дерево программы.
Классификация компиляторов в соответствии с исходным кодом и целевым кодом
Для преобразования исходного кода в целевой применяются разные подходы.
Одни компиляторы преобразуют код на высокоуровневом языке в машинный. Другие же компиляторы преобразуют с одного языка высокого уровня на другой язык высокого уровня. Таким образом, опираясь на данный критерий классификации, можно выделить следующие типы компиляторов:
- Кросс-компиляторы − такие компиляторы работают на одной платформе и производят код для запуска на другой платформе. Например, компилятор работает на платформе X и создает код для запуска на платформе Y. Такими компиляторами пользуются разработчики встроенных систем.
- Традиционные компиляторы − наиболее распространённый тип компиляторов. Такие компиляторы преобразуют исходный код языка высокого уровня в исходный код машинного языка.
- Транспилеры − они преобразуют исходный код языка высокого уровня в исходный код другого языка высокого уровня.
- Декомпиляторы − они принимают низкоуровневый исходный код в качестве входных данных и пытаются на его основе создать высокоуровневый исходный код, который может быть в дальнейшем успешно перекомпилирован.
Основные этапы работы компилятора
Исходная программа, которая написана на некотором условном языке программирования, представляет собой цепочку знаков. Компилятор по сути своей постепенно превращает эту цепочку знаков в цепочку битов – объектный код.
Компиляторы используют следующие принципы и технологии в своей работе:
- Проведение лексического анализа кода;
- Проведение синтаксического анализа кода;
- Генерирование промежуточного кода;
- Оптимизация промежуточного кода;
- Распределение памяти между переменными компилируемого скрипта;
- Генерирование объектного кода и компонация программных сегментов.
Принцип работы компилятора состоит в следующем:
а) проверяется весь текст программы на наличие синтаксических ошибок;
б) если программа не содержит ошибок, то происходит ее выполнение.
Генерация выполняемой программы происходит только в том случае, если в тексте программы нет синтаксических ошибок.
Отличительной особенностью компилятора является то, что на его вход подается программа на языке высокого уровня, а на выходе получается та же программа на языке низкого уровня.
Вам нужно срочно заказать статью по программированию для публикации? Обратитесь за помощью к нашим экспертам!
Комментарии