Introduktion til C # Compilers

I artikel C # Compiler er Compiler et softwareprogram, der konverterer kildekode (koden skrevet af enhver udvikler på et hvilket som helst sprog) til maskinlæringssprog, så den kunne forstås af processoren. Processoren er den vigtigste del af computeren, der kun forstår maskinkoder. Så det er obligatorisk at konvertere enhver sprogkode til maskinkoder.

I C # kører vi kompilatorerne, det tager kode som inputparameter og udfører en vis behandling, efter bearbejdning giver det output på mellemsprog. Denne output gemmes i * .dll- eller * .exe-filer

Så efter det genererede mellemsprog krævede vi at konvertere dette IL til maskinkoder, fordi processor kun forstod maskinkoder. Så vi brugte CLR (Common Language Runtime) til denne konvertering. CLR er et program, der kører på computeren og ændrer IL-koden til maskinkoder ved hjælp af Just-In-Time (ofte kaldet JIT). Når vi dobbeltklikkede på .exe-filen, kaldes JIT-kompilatoren og kompilerer IL-koden på den del af tiden, så det hedder derfor JUST-IN-TIME (JIT).

Sammenstilling kan ske implicit eller eksplicit. Den implicitte kompilering er to gange kompilering, hvor den først kompileres IS, og derefter kompileres den til maskinsprog. Denne proces kaldes JIT-kompilering eller JUST-In-Time-kompilering. JIT understøtter flere platforme og fremskynder udførelsen af ​​koden.

Typer af Just-in-Time-kompilator

Der er tre forskellige Just-In-Time Compiler

1. Pre JIT-kompilator

I denne kompilator er der kun en enkelt kompilationsproces, da hele kildekoden er samlet til den oprindelige kode.

2. Normal JIT-kompilator

I denne kompilator er kun disse metoder kompileret til maskinkode, som er påkrævet ved kørselstidspunkt. Compileren kompilerer disse metoder, gemmer dem i cachen og brugte den samme metode igen.

3. Econo JIT-kompilator

I denne kompilator samles kun disse metoder til maskinkode, som kræves på kørselstidspunktet, men disse metoder fjernes, hvis de ikke er påkrævet. I JIT er kun den krævede metode samlet under kørsel, og det kræver derfor mindre hukommelsesforbrug.

I ovenstående diagram

1-3 trin udføres på kompileringstidspunktet

3-5 trin udføres ved kørselstidspunktet.

Så når vi kører, opstår disse to typer fejl.

Kørselsfejl og kompileringsfejl

  • Compiler Fejl: Denne type fejl opstår i selve C # -kompilatoren. Det forhindrer, at C # -koden samles i .exe-format. Disse fejl er dybest set opstået på grund af syntaksfejl. Når vi forkert stavede nogen syntaks eller savner komma eller semikolon, forstod kompilatoren ikke dette, så det stopper behandlingen og kaster compile-time-fejlen. Vi kan se disse fejl i outputvinduet på IDE. Så ved at undersøge disse fejl kan vi rette vores kode.
  • Kørselsfejl: Dette er fejl i realtid. Disse opstår, når kode kompileres med succes, men støder på problemer under kørsel. Dette påvirker kodens opførsel. For eksempel kan vi sige, når vi forsøger at opdele et hvilket som helst tal med nul på det tidspunkt, der opstår fejl i løbetid. Disse fejl er mere kedelige end compiler-fejl, fordi vi i dette tilfælde skal afhjælpe kodens opførsel.

Type C # kompilatorer

Tidligere Microsoft-compilere blev navngivet som .Net Framework som C # compiler 2.0, C # compiler 3.5, C # compiler 4.x osv. Disse compilere blev ikke skrevet i C #, eller vi kan sige, at C # ikke var kompileret af C #. De andre samlere, der kom til efter dette er:

1. Roslyn

Tidligere blev kompilatoren skrevet i C / C ++. Roslyn er open source. Net-kompilator, hvor C ++ -koden udskiftes. Det henter de typer elementer i koden, deres forhold til hinanden. Da C # og VB-hold skrev kompilatoren, er der derfor visual studio-skabeloner til rådighed for begge. Det giver os mulighed for at skrive kode, der analyserer en kildefil, og det er let for os at ændre kildekoden.

Følgende er de fire API-lag af Roslyn

  • Scripting API: Dette lag giver en runtime-eksekveringskontekst og giver os mulighed for at bruge C # som scriptingsprog og har ingen afhængigheder af visuelle studiokomponenter.
  • Compiler API: Dette lag bruges til syntaks og indeholder referencer til samlinger og kildekodefiler. Dette lag har heller ingen afhængigheder af visuelle studiokomponenter.
  • Service API: Dette lag giver IntelliSense, formatering, Find alle referencer osv. Øverst på SDK. Det hjælper også med at styre information om projektet og styre projektafhængigheder.
  • Workspace API: Dette lag er hovedsageligt til analyse af kode og refactoring gennem IDE'er. Roslyn letter koden og består af et sæt API'er som compiler og service, der giver mange funktionaliteter som formatering, Intellisense osv. Det giver support til flere sprog. Workspace API'er giver dyb information om kildekode.

2. Monokompilatorer

Mono C # compiler baseret på ECMA standarder for C #. Det har flere versioner med en ramme som C # 1.0, 2.0, 3.0, 4.0. Monokompilatorens mcs målramme 1.1, gmcs målramme 2.0, hvorimod smcs og dmcs målramme 2.1 og 4.0.

  • mcs: Det understøtter alle C # 1.1-funktioner, såsom anonyme metoder, nullable typer, faste buffere, adgangsmodifikatorer på egenskaber, statiske klasser osv.
  • gmcs : Det understøtter C # 2.0-funktioner som forespørgselsudtryk, objektinitieringsprogrammer, delvise metoder, lambda-udtryk, automatisk implementerede egenskaber osv.
  • dmcs : Det understøtter C # 4.0-funktioner, der inkluderer navngivne argumenter, generisk type varians, dynamikbinding osv.

Den anden kompilator gerne RemObjects C # -kompiler, der følger C # -standarden pr. EMCA-specifikation og bortset fra at der er GNU C # -kompilatorer, der implementerer C # og .Net.

Konklusion

C # compiler er ligesom enhver anden compiler, der kompilerer kode til maskinkode, så processoren kan forstå processen.

Anbefalet artikel

Dette har været en guide til Data Mining Tool. Her diskuterer vi en introduktion til C # kompilatorer og forskellige typer Just-In-Time Compiler og C # Compilers. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

  1. Python-kompilatorer
  2. Java Compilers
  3. Bedste C-kompilatorer
  4. Bedste Java-kompilatorer
  5. Vejledning til PHP Compiler
  6. Få adgang til modifikatorer i PHP

Kategori: