Введение в компиляторы C #

В статье C # Compiler, Compiler - это программа, которая преобразует исходный код (код, написанный любым разработчиком на любом языке) в язык машинного обучения, чтобы его мог понять процессор. Процессор - самая важная часть компьютера, которая понимает только машинные коды. Поэтому обязательно конвертировать любой код языка в машинные коды.

В C # мы запускаем компиляторы, он принимает код в качестве входного параметра и выполняет некоторую обработку, после обработки он обеспечивает вывод на промежуточном языке. Этот вывод сохраняется в файлах * .dll или * .exe

Итак, после генерации промежуточного языка нам потребовалось преобразовать этот IL в машинные коды, потому что процессор понимал только машинные коды. Поэтому мы использовали CLR (Common Language Runtime) для этого преобразования. CLR - это программа, которая запускается на компьютере и заменяет код IL на машинные коды с помощью Just-In-Time (обычно называемого JIT). Когда мы дважды щелкаем по файлу .exe, JIT-компилятор вызывается и компилирует IL-код в это время, поэтому он называется JUST-IN-TIME (JIT).

Компиляция может быть сделана неявно или явно. Неявная компиляция является двойной компиляцией, в которой сначала компилируется IS, а после компилируется в машинный язык. Этот процесс называется JIT-компиляцией или JUST-In-Time-компиляцией. JIT поддерживает несколько платформ и ускоряет выполнение кода.

Типы Just-In-Time Compiler

Есть три разных компилятора 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 написали компилятор, поэтому шаблоны Visual Studio доступны для обоих. Это позволяет нам писать код, который анализирует исходный файл, и нам легко изменять исходный код.

Ниже приведены четыре уровня API Roslyn.

  • API сценариев. Этот уровень обеспечивает контекст выполнения во время выполнения и позволяет нам использовать C # в качестве языка сценариев и не зависит от компонентов Visual Studio.
  • API компилятора: этот слой используется для синтаксиса и содержит ссылки на сборки и файлы исходного кода. Этот слой также не зависит от компонентов Visual Studio.
  • Сервисный API. Этот слой обеспечивает IntelliSense, форматирование, поиск всех ссылок и т. Д. В верхней части SDK. Это также помогает в управлении информацией о проекте и управлении зависимостями проекта.
  • API рабочей области. Этот уровень предназначен главным образом для анализа кода и рефакторинга с помощью IDE. Roslyn упрощает код и состоит из набора API, таких как компилятор и сервис, который предоставляет множество функций, таких как форматирование, Intellisense и т. Д. Он поддерживает несколько языков. API рабочей области предоставляют подробную информацию об исходном коде.

2. Моно Компиляторы

Моно C # компилятор на основе стандартов ECMA для C #. У этого есть многократные версии с платформой как C # 1.0, 2.0, 3.0, 4.0. Монокомпилятор mcs предназначен для платформы 1.1, gmcs - для платформы 2.0, тогда как smcs и dmcs - для платформы 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 # подобен любому другому компилятору, который компилирует код в машинный код, чтобы процессор мог понять процесс.

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

Это было руководство для Data Mining Tool. Здесь мы обсуждаем введение в компиляторы C # и различные типы компиляторов Just-In-Time и C #. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Компиляторы Python
  2. Компиляторы Java
  3. Лучшие компиляторы Си
  4. Лучшие компиляторы Java
  5. Руководство по PHP-компилятору
  6. Модификаторы доступа в PHP