Обзор компиляторов Си

Давайте изучим эту концепцию компиляторов на примере. Предположим, вы были в месте, где языки, на которых вы говорите, совершенно не похожи друг на друга, и теперь у вас возникли проблемы с путешествиями, и вы хотите общаться с ними так же. Как? Вам нужен переводчик, верно? Вы предпочитаете, чтобы кто-то понимал ваш язык, переводил и позволял другому человеку понять, что вы хотели сказать. Точно так же мы будем писать наш C-код на языке высокого уровня, понятном человеку. Как программа поймет, что мы попросили это сделать? Это где компилятор входит в картину. Компилятор преобразует и переводит язык высокого класса в машинный (низкоуровневый) понятный язык. Процесс компиляции выполняет основные механизмы перевода, а также обнаружение ошибок. Компиляция внешнего интерфейса включает лексический, синтаксический и семантический анализ. И на заднем плане, компиляция выполняет генерацию и оптимизацию кода. Таким образом, в Си есть много компиляторов, таких как BDS, Clang, GCC, Interactive C, Lattice, Portable C Compiler, Visual Express и т. Д. Давайте узнаем больше о некоторых из них.

Пояснения к компиляторам Си

Ниже приведены лучшие компиляторы C:

1) Borland Turbo C

Turbo C является одним из основных и популярных компиляторов для языка программирования C. Это было впервые введено в 1987 году; он был популярен благодаря своим небольшим размерам, скорости компиляции и низкой цене. Как только Turbo C ++ был выпущен в 1990 году, оба компилятора были объединены, и название Turbo C было прекращено. В 2006 году Embarcadero Technologies повторно выпустила Turbo C в качестве бесплатного программного обеспечения. Вы помните этот синий экран?

2) Компилятор Tiny C

Компилятор Tiny C предназначен для работы на медленных компьютерах с небольшим дисковым пространством. Это компилятор ARM процессора C. Этот компилятор начал свою поддержку Windows с 2005 года. Некоторые из его функций упомянуты ниже.

  1. Его размер файла невелик и, по словам владельца этого компилятора (Фабрис Беллард). Скорость работы этого компилятора примерно в девять раз выше, чем у GCC. Компиляция, сборка и компоновка кода были основными атрибутами, которые учитывались при измерении скорости работы этого компилятора.
  2. Этот компилятор включал в себя множество специфичных для компилятора функций для увеличения дополнительной памяти, проверки привязки и имел большую стабильность кода.
  3. Этот компилятор позволяет автоматически выполнять программы во время компиляции только с использованием аргументов командной строки. Таким образом, программы выполняются в UNIX с использованием сценариев оболочки. Последняя версия была выпущена в декабре 2017 года.

3) Портативный компилятор C

Portable C Compiler (PCC) был очень ранним используемым и признанным компилятором для языка программирования C, который существует примерно в середине 1970-х годов. Этот компилятор имел длительный срок службы. Это было распространено в течение периода таким образом, что многие из компиляторов Си были основаны на нем. Преимущества PCC зависели от его возможностей и вероятностных прогнозов. Компилятор PCC был сделан таким образом, что исходные файлы были машинно-зависимыми, но не все, а только некоторые из них. Он может обнаруживать синтаксические ошибки и может выполнять совершенные проверки достоверности. Новая версия PCC была выпущена 10 декабря 2014 года.

4) GCC

GNU Compiler Collection - это компилятор, созданный проектом GNU. Это поддерживает много языков программирования, и это свободная основа программного обеспечения в соответствии с General Public License. Этот компилятор был впервые выпущен в 1987 году и в начале поддерживал только язык C-программирования. Постепенно он расширился до C ++, Java, Android и IOS. Здесь каждый из различных языковых компиляторов имеет свою собственную программу, которая читает написанный код и отправляет машинный код в качестве вывода. Все они имеют общую внутреннюю структуру. Когда написан язык высокого уровня в соответствии с языком, на котором он написан, компилятор анализирует код на этом языке и создает абстрактное синтаксическое дерево. GCC использует парсеры LALR, но постепенно переключается на парсеры с рекурсивным спуском для C в 2006 году. Переходя к части оптимизации, как уже известно, это может происходить на любом этапе компиляции. Однако здесь массовые оптимизации выполняются до генерации кода и после синтаксического семантического анализа. Ниже приведены некоторые из оптимизаций, выполненных GCC.

  1. Это может устранить мертвые части кода.
  2. Это может устранить избыточность на уровне кода.
  3. Замена агрегатов относительно скалярного уровня.
  4. Может выполнять оптимизацию с массивами.

В GCC серверная часть задается макросами препроцессора и функциями, специфичными для конкретной архитектуры. Этот код обычно создается путем вызова сначала небольшого фрагмента кода, который связан с каждым шаблоном, и генерирования инструкций из набора команд. Это делается с помощью регистров, смещений и адресов, которые выбираются на этапе перезагрузки. Текущая версия GCC - 9.2, выпущенная 12 августа 2019 года.

5) лязг

  1. Clang; включая C, также является компилятором для языков программирования C ++, Objective-C и Objective-C ++. Этот компилятор использует LLVM для компиляций, связанных с внутренним кодом. Этот компилятор был разработан для замены GCC, поддерживая многие его флаги компиляции и языковые расширения.
  2. У Clang есть много участников, включая Apple, Microsoft, Google, Sony и Intel. Это программное обеспечение с открытым исходным кодом. LLVM был впервые использован GCC для компиляции интерфейса, но GCC вызвал некоторые проблемы для разработчиков в Apple, так как исходный код большой и сложный в использовании. Итак, они придумали Clang.
  3. Одна из главных целей Clang - предоставить библиотечную архитектуру. Он предназначен для хранения большего количества информации в процессе компиляции, чем GCC. Это также помогает сохранить общую форму исходного кода.
  4. Отчет об ошибках, сгенерированный Clang во время компиляции, всегда детализирован и специфичен для машиночитаемого формата. Clang всегда стремился уменьшить чрезмерное использование пространства памяти и увеличить скорость компиляции по сравнению с GCC, и благодаря этим качествам он стал одним из самых быстрорастущих используемых компиляторов за определенный период времени. Но через некоторое время производительность Clang начала снижаться. В отчетах говорилось, что производительность отстала с почти большими различиями по сравнению с GCC и стала иметь более медленную производительность. Самые последние сравнения показывают, что оба компилятора подошли и увеличили свою производительность, и снова создали большую конкуренцию между ними. Тем не менее, GCC остается на вершине списка.

Вывод

Хотя для Си доступно множество компиляторов, GCC на данный момент является одним из лучших. Объявление победителя здесь основано на проверках надежности, оптимизации, скорости и кода / ошибок / синтаксиса. Благодаря этому мы можем четко понимать, что компилятор является важной опорой для языков программирования. Без их работы, какую бы программу мы не написали, это было бы просто мусором для системы.

Рекомендуемые статьи

Это было руководство для лучших компиляторов Си. Здесь мы обсуждаем объяснения компиляторов Си с пятью краткими замечаниями. Вы также можете просмотреть нашу другую предлагаемую статью, чтобы узнать больше-

  1. Компиляторы Python
  2. Компиляторы Java
  3. Как установить C
  4. Преимущества C
  5. Введение в PHP-компилятор
  6. Компиляторы JavaScript