Inleiding tot C # Compilers

In artikel C # Compiler is Compiler een softwareprogramma dat broncode (de code die door elke ontwikkelaar in elke taal is geschreven) omzet in machine learning-taal zodat deze door de processor kan worden begrepen. De processor is het belangrijkste onderdeel van de computer dat alleen machinecodes begrijpt. Het is dus verplicht om elke taalcode om te zetten in machinecodes.

In C # voeren we de compilers uit, het neemt code als invoerparameter en voert enige verwerking uit, na verwerking levert het de uitvoer in de tussenliggende taal. Deze uitvoer wordt opgeslagen in * .dll- of * .exe-bestanden

Dus nadat de tussenliggende taal was gegenereerd, moesten we deze IL omzetten in machinecodes omdat de processor alleen machinecodes begreep. Dus gebruikten we CLR (Common Language Runtime) voor deze conversie. CLR is een programma dat op de computer wordt uitgevoerd en de IL-code in machinecodes verandert met behulp van Just-In-Time (gewoonlijk JIT genoemd). Wanneer we dubbelklikken op het .exe-bestand, wordt JIT-compiler aangeroepen en wordt de IL-code op dat deel van de tijd gecompileerd, dus daarom heet het JUST-IN-TIME (JIT).

Compilatie kan impliciet of expliciet worden gedaan. De impliciete compilatie is twee keer een compilatie waarin eerst IS wordt gecompileerd en daarna wordt gecompileerd naar machinetaal. Dit proces wordt JIT-compilatie of JUST-In-Time-compilatie genoemd. JIT ondersteunt meerdere platforms en versnelt de uitvoering van de code.

Soorten just-in-time compiler

Er zijn drie verschillende Just-In-Time Compiler

1. Pre JIT compiler

In deze compiler is er slechts een enkel compilatieproces omdat de hele broncode wordt gecompileerd in de native code.

2. Normale JIT-compiler

In deze compiler worden alleen die methoden gecompileerd in machinecode, die tijdens runtime vereist is. De compiler compileert die methoden, slaat ze op in de cache en gebruikt dezelfde methode opnieuw.

3. Econo JIT-compiler

In deze compiler worden alleen die methoden gecompileerd in machinecode die tijdens runtime vereist is, maar deze methoden worden verwijderd als ze niet nodig zijn. In JIT wordt alleen de vereiste methode tijdens runtime gecompileerd en vereist daarom minder geheugengebruik.

In het bovenstaande diagram

1-3 stappen worden uitgevoerd tijdens het compileren

3-5 stappen worden uitgevoerd tijdens de uitvoering.

Dus wanneer we deze twee soorten fouten optreden.

Runtime-fouten en compilerfouten

  • Compilerfouten: dit type fout treedt op in de C # compiler zelf. Het voorkomt dat de C # -code compileert naar .exe-formaat. Deze fouten zijn in principe opgetreden vanwege syntaxisfouten. Wanneer we een syntaxis verkeerd hebben gespeld of de komma of puntkomma missen, heeft de compiler dit niet begrepen, waardoor de verwerking wordt gestopt en de compilatie-fout wordt gegenereerd. We kunnen deze fouten zien in het uitvoervenster van IDE. Dus door deze fouten te onderzoeken kunnen we onze code corrigeren.
  • Runtime-fouten: dit zijn realtime-fouten. Deze treden op wanneer code met succes wordt gecompileerd, maar er tijdens het uitvoeren problemen optreden. Dit heeft invloed op het gedrag van de code. We kunnen bijvoorbeeld zeggen wanneer we proberen een getal met nul te delen op dat moment dat er een runtime-fout optreedt. Deze fouten zijn lastiger dan compilerfouten, omdat we in dit geval het gedrag van de code moeten corrigeren.

Type C # compilers

Eerdere Microsoft-compilers werden genoemd als .Net Framework zoals C # compiler 2.0, C # compiler 3.5, C # compiler 4.x, enz. Deze compilers zijn niet geschreven in C # of we kunnen zeggen dat C # niet is samengesteld door C #. De andere compilers die hierna zijn ontstaan, zijn:

1. Roslyn

Eerder werd de compiler geschreven in C / C ++. Roslyn is een open source .Net-compiler waarin de C ++ -code wordt vervangen. Het haalt de soorten elementen in code op, hun relatie met elkaar. Omdat C # en VB teams de compiler hebben geschreven, zijn daarom visuele studiosjablonen beschikbaar voor beide. Het stelt ons in staat om code te schrijven die een bronbestand parseert en het is gemakkelijk voor ons om de broncode te wijzigen.

Hier volgen de vier API-lagen van Roslyn

  • Scripting API: deze laag biedt een runtime-uitvoeringscontext en stelt ons in staat om C # als scripttaal te gebruiken en heeft geen afhankelijkheden van visuele studiocomponenten.
  • Compiler-API: deze laag wordt gebruikt voor syntaxis en bevat verwijzingen voor merken en broncodebestanden. Deze laag heeft ook geen afhankelijkheden van visuele studiocomponenten.
  • Service-API: deze laag biedt IntelliSense, opmaak, Find All References, etc. bovenop SDK. Het helpt ook bij het beheren van informatie over het project en het beheren van projectafhankelijkheden.
  • Workspace API: deze laag is voornamelijk bedoeld voor analyse van code en refactoring via IDE's. Roslyn maakt de code eenvoudiger en bestaat uit een set API's zoals compiler en service die vele functionaliteiten biedt zoals opmaak, Intellisense, etc. Het biedt ondersteuning voor meerdere talen. Workspace-API's bieden uitgebreide informatie over broncode.

2. Mono-compilers

Mono C # compiler gebaseerd op ECMA-normen voor C #. Het heeft meerdere versies met een framework zoals C # 1.0, 2.0, 3.0, 4.0. De mono-compiler mcs target framework 1.1, gmcs target framework 2.0, terwijl smcs en dmcs target framework 2.1 en 4.0 respectievelijk.

  • mcs: het ondersteunt alle C # 1.1-functies, zoals anonieme methoden, nulbare typen, vaste buffers, toegangsmodificaties op eigenschappen, statische klassen, enz.
  • gmcs : het ondersteunt C # 2.0-functies zoals query-expressies, objectinitializers, gedeeltelijke methoden, lambda-expressies, automatisch geïmplementeerde eigenschappen, etc.
  • dmcs : het ondersteunt C # 4.0-functies, waaronder benoemde argumenten, generieke typevariantie, dynamiekbinding, etc.

De andere compiler zoals RemObjects C # compiler die de C # standaard volgt volgens de EMCA-specificatie en anders dan dat er GNU C # compilers zijn die C # en .Net implementeren.

Conclusie

C # compiler is net als elke andere compiler die code compileert in machinecode zodat de processor het proces kan begrijpen.

Aanbevolen artikel

Dit is een gids voor Data Mining Tool geweest. Hier bespreken we een inleiding tot C # compilers en verschillende soorten Just-In-Time Compiler en C # Compilers. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Python-compilers
  2. Java-compilers
  3. Beste C-compilers
  4. Beste Java-compilers
  5. Gids voor PHP Compiler
  6. Toegang tot modificaties in PHP