Огляд компіляторів C

Давайте вивчимо цю концепцію компіляторів на прикладі. Припустимо, ви побували в місці, де мови, якими ви розмовляєте, абсолютно відрізняються одна від одної, і тепер у вас були проблеми з подорожами, і ви хочете спілкуватися з ними однаково. Як? Чи потрібен був вам перекладач? Ви вирішите мати когось, хто може зрозуміти вашу мову та перекладати, а дозволити протилежному зрозуміти, що ви хотіли сказати. Таким же чином ми писали б свій C код мовою високого рівня, що є зрозумілим для людини форматом. Як програма зрозуміла б, про що ми її попросили зробити? Ось тут компілятор потрапляє на малюнок. Компілятор перетворює та переводить мову високого класу на машинну (низький рівень) зрозумілу мову. Процес компіляції виконує основні механізми перекладу, а також виявлення помилок. Компіляція на передньому кінці включає лексичний, синтаксичний та семантичний аналіз. І на звороті, компіляція робить генерацію та оптимізацію коду. Тому у 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 Compiler

Компілятор Tiny C призначений для роботи на повільних комп'ютерах з невеликим дисковим простором. Це компілятор процесора ARM C. Цей компілятор розпочав підтримку Windows з 2005 року. Деякі її функції згадуються нижче.

  1. Розмір файлу невеликий і на думку власника цього компілятора (Fabrice Bellard). Швидкість цього компілятора приблизно в дев'ять разів швидша, ніж GCC. Компіляція, збірка та зв'язування коду були основними атрибутами, що розглядалися для вимірювання швидкості цього компілятора.
  2. Цей компілятор включив безліч особливостей компілятора, щоб збільшити додаткову пам'ять, зв'язану перевірку та підвищити стабільність коду.
  3. Цей компілятор дозволяє автоматично виконувати програми протягом часу компіляції лише за допомогою аргументів командного рядка. Таким чином, програми виконуються під UNIX, використовуючи сценарії оболонки. Остання версія була випущена в грудні 2017 року.

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

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

4) GCC

Колекція компілятора GNU - це компілятор, створений проектом GNU. Це підтримує багато мов програмування, і це безкоштовна основа програмного забезпечення згідно з Загальною публічною ліцензією. Цей компілятор був вперше випущений у 1987 році, і він підтримував лише мову програмування С на початку. Повільно він розширився до C ++, Java, Android та IOS. Тут кожен компілятор різних мов має власну програму, яка зчитує написаний код і надсилає машинний код як вихід. Усі вони мають загальну внутрішню структуру. Коли мова на високому рівні написана, відповідно до мови, якою вона написана, компілятор аналізує код цією мовою та створює абстрактне дерево синтаксису. GCC використовує парсери LALR, але повільно переходить на рекурсивні парсери для C в 2006 році. Переходячи до частини оптимізації, як уже відомо, це може відбуватися під час будь-якої фази компіляції. Однак тут масові оптимізації проводяться до генерації коду та після синтаксису, семантичного аналізу. Нижче наведено кілька оптимізацій, виконаних GCC.

  1. Це може усунути частини Dead Code.
  2. Це може усунути надмірність на рівні коду.
  3. Заміна агрегатів щодо скалярного рівня.
  4. Може виконувати оптимізацію за допомогою масивів.

У GCC задній кінець задається макросами препроцесора та функціями, характерними для певної архітектури. Цей код, як правило, будується шляхом спочатку виклику невеликого фрагмента коду, який асоціюється з кожним шаблоном та генерування інструкцій з набору інструкцій. Це робиться за допомогою регістрів, зсувів та адрес, обраних під час фази повторного завантаження. Поточна версія GCC становить 9, 2, яка вийшла 12 серпня 2019 року.

5) Кланг

  1. Кланг; включаючи C, є також компілятором для мов програмування на C ++, Objective-C і target-C ++. Цей компілятор використовує LLVM для компіляцій, пов'язаних із зворотним кінцем. Цей компілятор був розроблений як заміна для GCC, підтримуючи багато його прапорів компіляції та розширень мови.
  2. У Clang є багато учасників, включаючи Apple, Microsoft, Google, Sony та Intel. Це програмне забезпечення з відкритим кодом. LLVM вперше був використаний GCC для компіляції на передньому кінці, але GCC спричинив деякі проблеми для розробників в Apple, оскільки вихідний код великий і складний у використанні. Отже, вони придумали Кланг.
  3. Однією з головних цілей Кланга є створення архітектури на базі бібліотеки. Він покликаний зберігати більше інформації в процесі компіляції, ніж GCC. Це також допомагає зберегти загальну форму оригінального коду.
  4. Звіт про помилки, сформований Clang під час компіляції, завжди є детальним та конкретним у машиночитаному форматі. Кланг завжди прагнув скоротити надмірне використання простору пам’яті та збільшити швидкість компіляції порівняно з GCC, і завдяки цим якостям він став одним з найбільш швидко зростаючих використовуваних компіляторів протягом певного часу. Але через деякий час виступ Кланг почав знижуватися. У доповідях зазначалося, що результативність відрізнялася майже великими відмінностями порівняно з GCC та почала мати менші показники. Найновіші порівняння свідчать про те, що обидва укладачі придумали і збільшили свою ефективність, і знову створили велику конкуренцію між ними. Однак GCC залишається на першому місці.

Висновок

Хоча є багато компіляторів, доступних для C, GCC виділяється одним із найкращих на сьогодні. Оголошення переможця тут засноване на довговічність, оптимізацію, швидкість та перевірку коду / помилки / синтаксису. Через це ми можемо чітко зрозуміти, що компілятор є важливим стовпом для мов програмування. Без їх роботи будь-яка програма, яку ми пишемо, була б просто сміттям для системи.

Рекомендовані статті

Це керівництво для найкращих компіляторів C. Тут ми обговорюємо пояснення компіляторів C з п'ятьма короткими пунктами. Ви також можете ознайомитися з іншою запропонованою нами статтею, щоб дізнатися більше -

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