Вступ до компіляторів C #

У статті C # Compiler Compiler - це програмне забезпечення, яке перетворює вихідний код (Код, написаний будь-яким розробником будь-якою мовою) в машинну мову навчання, щоб його міг зрозуміти процесор. Процесор - це найважливіша частина комп'ютера, яка розуміє лише машинні коди. Тому обов'язково перетворювати будь-який код мови в машинні коди.

У C # ми запускаємо компілятори, він приймає код як вхідний параметр і виконує деяку обробку, після обробки він забезпечує вихід на проміжній мові. Цей вихід зберігається у файлах * .dll або * .exe

Отже, після створеного проміжного мови нам потрібно було перетворити цю ІЛ в машинні коди, оскільки процесор розумів лише машинні коди. Тому ми використовували CLR (загальну мову виконання) для цієї конверсії. CLR - програма, яка працює на комп’ютері і змінює код IL на машинні коди за допомогою Just-In-Time (зазвичай називається JIT). Коли ми двічі клацнули мишкою на файл .exe, компілятор JIT викликає і компілює ІЛ-код у ту частину часу, тому він і називається ПОВЕРНЕНО-ЧАС (JIT).

Компіляція може здійснюватися неявно або явно. Неявна компіляція - це двічі компіляція, в якій спочатку складається компіляція ІС, а потім - машинна мова. Цей процес називається компіляцією JIT або компіляцією JUST-In-Time. JIT підтримує декілька платформ і прискорює виконання коду.

Типи компілятора, який працює вчасно

Існує три різні компілятори Just-in-Time

1. Попередньо компілятор JIT

У цьому компіляторі є лише один процес компіляції, оскільки весь вихідний код зібраний у нативний код.

2. Звичайний компілятор JIT

У цьому компіляторі лише ті методи компілюються в машинний код, який необхідний під час виконання. Компілятор компілює ці методи, зберігає їх у кеші і знову використовує той самий метод.

3. Компілятор Econo JIT

У цьому компіляторі лише ті методи компілюються в машинний код, який необхідний під час виконання, але ці методи видаляються, якщо вони не потрібні. У JIT під час виконання часу компілюється лише необхідний метод, тому він вимагає меншого використання пам'яті.

На наведеній діаграмі

1-3 кроки будуть виконані під час компіляції

3-5 кроків буде виконано під час виконання.

Отже, при запуску цих двох типів виникає помилка.

Помилки під час виконання та помилки компілятора

  • Помилки компілятора: Цей тип помилок виникає в самому компіляторі C #. Це запобігає компіляції коду C # у формат .exe. Ці помилки в основному трапляються через синтаксичну помилку. Коли ми неправильно написали синтаксис або пропустили кому чи крапку з комою, тоді компілятор цього не зрозумів, тому він зупиняє обробку та викидає помилку часу компіляції. Ці помилки ми можемо побачити у вікні виводу IDE. Отже, досліджуючи ці помилки, ми можемо виправити наш код.
  • Помилки під час виконання: Це помилки в режимі реального часу. Вони трапляються, коли код складено успішно, але під час запуску виникають будь-які проблеми. Це впливає на поведінку коду. Наприклад, ми можемо сказати, коли ми намагаємось ділити будь-яке число на нуль на той час виникає помилка часу виконання. Ці помилки є більш стомлюючими, ніж помилки компілятора, оскільки в цьому випадку нам потрібно виправити поведінку коду.

Тип компіляторів C #

Раніше компілятори Microsoft були названі як .Net Framework, як компілятор C # 2.0, компілятор C # 3.5, компілятор C # 4.x і т.д. Ці компілятори не були написані на C # або, можна сказати, C # не був складений C #. Інші компілятори, що з’явилися після цього, є:

1. Рослін

Раніше компілятор писався на C / C ++. Roslyn є відкритим кодом .Net компілятор, в якому замінюється код C ++. Він вибирає типи елементів у коді, їх співвідношення один з одним. Як команди C # і VB писали компілятор, отже, візуальні шаблони студії доступні для обох. Це дозволяє нам писати код, який аналізує вихідний файл, і нам легко змінювати вихідний код.

Нижче наведено чотири шари API Roslyn

  • API сценаріїв: Цей шар забезпечує контекст виконання програми та дозволяє нам використовувати C # як мову сценаріїв і не має залежностей від компонентів візуальної студії.
  • API компілятора: Цей шар використовується для синтаксису і містить посилання на збірки та файли вихідного коду. Цей шар також не має залежностей від компонентів візуальної студії.
  • API API: Цей шар забезпечує IntelliSense, форматування, пошук усіх посилань тощо у верхній частині SDK. Це також допомагає в управлінні інформацією про проект та управління залежностями проекту.
  • API робочої області: Цей шар в основному призначений для аналізу коду та рефакторингу через IDE. Рослін полегшує код і складається з набору API, таких як компілятор та сервіс, який надає багато функцій, таких як форматування, Intellisense тощо. Він забезпечує підтримку декількох мов. API робочої області надають глибоку інформацію про вихідний код.

2. Моно-компілятори

Моно компілятор C # на основі стандартів ECMA для C #. Він має кілька версій з такою рамкою, як C # 1.0, 2.0, 3.0, 4.0. Моно компілятор mcs націлює рамки 1.1, gmcs націлює на рамки 2.0, тоді як smcs і dccs націлюються на рамки 2.1 та 4.0 відповідно.

  • mcs: Він підтримує всі функції C # 1.1, такі як анонімні методи, зведені типи, фіксовані буфери, модифікатори доступу за властивостями, статичні класи тощо.
  • gmcs : Він підтримує функції C # 2.0, такі як вирази запитів, ініціалізатори об'єктів, часткові методи, лямбда-вирази, автоматично реалізовані властивості тощо.
  • dmcs : Він підтримує функції C # 4.0, які включають названі аргументи, загальну дисперсію типу, прив'язку динаміки тощо.

Інший компілятор, як компілятор RemObjects C #, який відповідає стандарту C # відповідно до специфікації EMCA, і крім того, є компілятори GNU C #, які реалізують C # і .Net.

Висновок

Компілятор C # подібно до будь-якого іншого компілятора, який компілює код у машинний код, щоб процесор міг зрозуміти процес.

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

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

  1. Компілятори Python
  2. Компілятори Java
  3. Кращі компілятори C
  4. Кращі компілятори Java
  5. Керівництво по компілятору PHP
  6. Доступ до модифікаторів у PHP