Sissejuhatus C # koostajatesse

Artiklis C # Kompilaator on kompilaator tarkvaraprogramm, mis teisendab lähtekoodi (kood, mille arendaja on kirjutanud mis tahes keeles) masinõppekeeleks, et protsessor sellest aru saaks. Protsessor on arvuti kõige olulisem osa, mis mõistab ainult masinkoode. Seega on mis tahes keelekoodi muutmine masinkoodideks kohustuslik.

C # -s käitame kompilatoreid, see võtab sisendparameetrina koodi ja teostab teatud töötlust, pärast töötlemist annab väljundi vahekeeles. See väljund salvestatakse * .dll- või * .exe-failidesse

Niisiis, pärast genereeritud vahekeele me pidime selle IL masinkoodideks teisendama, kuna protsessor mõistis ainult masinkoode. Nii kasutasime selle teisendamise jaoks CLR-i (Common Language Runtime). CLR on arvutis töötav programm, mis muudab Just-In-Time (tavaliselt nimega JIT) abil IL-koodi masinkoodideks. Kui teeme .exe-failil topeltklõpsu, käivitatakse JIT-i kompilaator ja see koostab sellel ajahetkel IL-koodi, nii et selle nimi on JUST-IN-TIME (JIT).

Kompileerimine võib toimuda kaudselt või kaudselt. Kaudne kompileerimine on kaks korda kompileerimine, kus esiteks kompileeritakse IS ja pärast seda kompileeritakse masinkeelde. Seda protsessi nimetatakse JIT-i kompileerimiseks või JUST-in-Time-kompileerimiseks. JIT toetab mitut platvormi ja kiirendab koodi täitmist.

Just-in-Time kompilaatori tüübid

Seal on kolm erinevat Just-In-Time koostajat

1. JIT-eelne koostaja

Selles kompilaatoris on ainult üks kompileerimise protsess, kuna kogu lähtekood kompileeritakse natiivkoodiks.

2. Tavaline JIT-i kompilaator

Selles kompilaatoris kompileeritakse masinkoodisse ainult need meetodid, mis on käituse ajal nõutavad. Kompilaator kompileerib need meetodid, salvestab need vahemällu ja kasutas sama meetodit uuesti.

3. Econo JIT koostaja

Selles kompilaatoris kompileeritakse ainult need meetodid masinakoodidesse, mis on käituse ajal vajalikud, kuid need meetodid eemaldatakse, kui neid pole vaja. JIT-is kompileeritakse töö ajal ainult vajalik meetod, seetõttu nõuab see vähem mälukasutust.

Ülaltoodud diagrammil

Kompileerimise ajal täidetakse 1-3 sammu

Käituse ajal täidetakse 3-5 sammu.

Niisiis, kui me käivitame, juhtub neid kahte tüüpi tõrkeid.

Käitusaja vead ja kompilaatori vead

  • Kompilaatori vead: seda tüüpi tõrked esinevad C # kompilaatoris endas. See takistab C # koodi kompileerimist .exe-vormingusse. Need vead ilmnevad põhimõtteliselt süntaksivigadest. Kui me kirjutasime mis tahes süntaksi valesti või jätsime koma või semikooloni, siis kompilaator ei mõistnud seda, nii et see peatab töötlemise ja viskab kompileerimise aja vea. Neid vigu näeme IDE väljundiaknas. Nii et neid vigu uurides saame oma koodi parandada.
  • Kestusvead: need on reaalajas vead. Need tekivad siis, kui kood on edukalt kompileeritud, kuid töötamise ajal ilmnevad probleemid. See mõjutab koodi käitumist. Näiteks võime öelda, kui proovime suvalist arvu nulliga jagada, sel ajal ilmneb käivitusaja viga. Need vead on tüütumad kui kompilaatori vead, sest sel juhul peame parandama koodi käitumist.

C # tüüpi kompilaatorite tüüp

Varasemate Microsofti kompilaatorite nimi oli .Net Framework nagu C # kompilaator 2.0, C # kompilaator 3.5, C # kompilaator 4.x jne. Need kompilaatorid ei olnud kirjutatud C # kujul või võime öelda, et C # ei koostanud C #. Muud kompilaatorid, mis pärast seda tekkisid, on:

1. Roslyn

Varem oli kompilaator kirjutatud C / C ++ keeles. Roslyn on avatud lähtekoodiga. Netikompilaator, milles C ++ kood asendatakse. See tõmbab koodis olevate elementide tüübid, nende suhte üksteisega. Kuna C # ja VB meeskonnad kirjutasid kompilaatori, on visuaalstuudio mallid saadaval mõlemale. See võimaldab meil kirjutada koodi, mis parsib lähtefaili, ja meil on lihtne lähtekoodi muuta.

Järgnevalt on toodud Roslyni neli API kihti

  • Skriptimise API: see kiht pakub käivituskonteksti ja võimaldab meil kasutada skriptikeelena C # ning sellel pole sõltuvust visuaalstuudio komponentidest.
  • Kompilaatori API: seda kihti kasutatakse süntaksina ja see sisaldab viiteid koostudele ja lähtekoodifailidele. Sellel kihil pole ka sõltuvust visuaalstuudio komponentidest.
  • Teenuse API: see kiht pakub SDK ülaosas IntelliSense'i, vormindamist, kõigi viidete otsimist jne. Samuti aitab see hallata projekti kohta käivat teavet ja hallata projekti sõltuvusi.
  • Tööruumi API: see kiht on mõeldud peamiselt IDE-de abil koodi analüüsimiseks ja taasreaktoriseerimiseks. Roslyn muudab koodi lihtsamaks ja koosneb API-de komplektist, näiteks kompilaatorist ja teenusest, mis pakub paljusid funktsioone, näiteks vormindamist, Intellisense'i jne. See pakub tuge mitmele keelele. Tööruumi API-d pakuvad lähtekoodi kohta põhjalikku teavet.

2. Monokompilaatorid

Mono C # kompilaator põhineb CMA ECMA standarditel. Sellel on mitu versiooni, mille raamistik on nagu C # 1.0, 2.0, 3.0, 4.0. Monokompilaator mcs on suunatud raamistikule 1.1, gmcs - raamistikule 2.0, samas kui smcs ja dmcs - vastavalt raamistikule 2.1 ja 4.0.

  • mcs: see toetab kõiki C # 1.1 funktsioone, nagu anonüümsed meetodid, tühistatavad tüübid, fikseeritud puhvrid, omaduste juurdepääsu muutjad, staatilised klassid jne.
  • gmcs : See toetab C # 2.0 funktsioone, nagu päringulaused, objekti initsialiseerijad, osalised meetodid, lambda-avaldised, automaatselt rakendatud omadused jne.
  • dmcs : see toetab C # 4.0 funktsioone, mis hõlmavad nimetatud argumente, üldist tüübi dispersiooni, dünaamika sidumist jne.

Teine kompilaator nagu RemObjects C # kompilaator, mis järgib C # standardit vastavalt EMCA spetsifikatsioonile, ja lisaks sellele, et on olemas GNU C # kompilaatorid, mis rakendavad C # ja .Net.

Järeldus

C # kompilaator on täpselt nagu iga teine ​​kompilaator, mis kompileerib koodi masinkoodiks, et protsessor saaks protsessist aru.

Soovitatav artikkel

See on juhend Data Mining Tool jaoks. Siin käsitleme sissejuhatust C # -kompilaatoritesse ning eri tüüpi Just-In-Time-kompilaatoritesse ja C # -kompilaatoritesse. Lisateavet leiate ka meie muudest soovitatud artiklitest -

  1. Pythoni koostajad
  2. Java kompilaatorid
  3. Parimad C-kompilaatorid
  4. Parimad Java kompilaatorid
  5. PHP-kompilaatori juhend
  6. Juurdepääs modifikaatoritele PHP-s

Kategooria: