Въведение в компилаторите на 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

Има три различни компилатора Just-in-Time

1. Pre 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. Roslyn прави кода по-лесен и се състои от набор от API-та, като компилатор и услуга, която предоставя много функционалности като форматиране, Intellisense и др. Той осигурява поддръжка на няколко езика. API-тата на работното пространство предоставят задълбочена информация за изходния код.

2. Моно компилатори

Mono 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 # компилаторът е точно като всеки друг компилатор, който компилира код в машинен код, за да може процесорът да разбере процеса.

Препоръчителен член

Това е ръководство за инструмента за обработка на данни. Тук обсъждаме въведение към компилаторите на C # и различните видове компилатори Just-in-Time и C # компилатори. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Съставители на Python
  2. Java компилатори
  3. Най-добрите компилатори на C
  4. Най-добрите компилатори на Java
  5. Ръководство за компилатор на PHP
  6. Достъп Модификатори в PHP