Bevezetés a C # fordítóba

A C # Compiler cikkben a Compiler egy olyan program, amely a forráskódot (a fejlesztők által bármilyen nyelven írt kódot) gépi tanulási nyelvre konvertálja, hogy a processzor megértse. A processzor a számítógép legfontosabb része, amely csak a gépi kódokat érti meg. Tehát kötelező minden nyelvi kódot gépi kódokká konvertálni.

A C # -ben a fordítókat futtatjuk, a kódot veszi bemeneti paraméterként, és elvégzi a feldolgozást, majd a feldolgozás után a kimenetet köztes nyelven nyújtja. Ezt a kimenetet * .dll vagy * .exe fájlokba menti

Tehát a közbenső nyelv létrehozása után ezt az IL-t gépi kódokká kellett konvertálni, mivel a processzor csak a gépi kódokat értette. Tehát a CLR-t (Common Language Runtime) használtuk erre az átalakításra. A CLR egy olyan program, amely a számítógépen fut, és az IL-kódot gépi kódokra változtatja a Just-In-Time (általában JIT) segítségével. Amikor kétszer kattintunk a .exe fájlra, meghívjuk a JIT fordítót, amely az adott időszakban összeállítja az IL-kódot, tehát ezért nevezik JUST-IN-TIME (JIT) nevet.

Az összeállítás implicit vagy explicit módon is elvégezhető. Az implicit összeállítás kétszeres összeállítás, amelyben először összeállítják IS, utána gépi nyelvre fordítják. Ezt a folyamatot nevezzük JIT fordításnak vagy JUST-in-Time fordításnak. A JIT több platformot támogat, és felgyorsítja a kód végrehajtását.

A Just-In-Time fordító típusai

Három különféle Just-In-Time fordító létezik

1. A JIT előtti fordító

Ebben a fordítóban csak egy fordítási folyamat van, mivel a teljes forráskód a natív kódba van fordítva.

2. Normál JIT fordító

Ebben a fordítóban csak azokat a módszereket állítják össze a gépi kódba, amelyre futásidejűleg szükség van. A fordító összeállítja ezeket a módszereket, tárolja a gyorsítótárban, és ugyanazt a módszert ismét használja.

3. Az Econo JIT fordító

Ebben a fordítóban csak azokat a módszereket fordítják be egy gépi kódba, amelyre egy futásidejűleg szükség van, azonban ezeket a metódusokat eltávolítják, ha nem szükségesek. A JIT-ben csak a szükséges módszer fordul elő futási időben, ezért kevesebb memóriafelhasználást igényel.

A fenti ábra

Az összeállításkor 1-3 lépést hajt végre

A futási időben 3-5 lépés hajtódik végre.

Tehát, amikor futtatjuk, ez a kétféle hiba lép fel.

Futásidejű hibák és fordító hibák

  • Fordító hibák: Az ilyen típusú hiba maga a C # fordítóban fordul elő. Megakadályozza a C # kód fordítását .exe formátumba. Ezeket a hibákat alapvetően a szintaxis hibája okozta. Ha hibásan írottunk szintaxist, vagy hiányzott a vessző vagy a pontosvessző, akkor a fordító ezt nem értette, tehát leállítja a feldolgozást, és eldobja a fordítási idő hibát. Ezeket a hibákat az IDE kimeneti ablakában láthatjuk. Tehát ezeket a hibákat megvizsgálva javíthatjuk kódunkat.
  • Futásidejű hibák: Ezek valós idejű hibák. Ezek akkor fordulnak elő, amikor a kód sikeresen lefordul, de futás közben bármilyen probléma merül fel. Ez befolyásolja a kód viselkedését. Például azt mondhatjuk, amikor megpróbálunk bármilyen számot nullával osztani, abban az időben hiba fordul elő. Ezek a hibák unalmasabbak, mint a fordító hibák, mert ebben az esetben ki kell javítani a kód viselkedését.

C # Összeállítók típusa

A korábbi Microsoft fordítókat .Net Framework néven neveztük el, például C # fordító 2.0, C # fordító 3.5, C # fordító 4.x stb. Ezek a fordítók nem C betűvel vannak írva, vagy mondhatjuk, hogy a C # nem a C # fordítója. A többi fordító, amely ez után jött létre:

1. Roslyn

Korábban a fordítót C / C ++ nyelven írták. A Roslyn nyílt forráskódú .Net fordító, amelyben a C ++ kód helyébe lép. Beolvassa a kódban szereplő elemek típusait, egymáshoz való viszonyát. Mivel a C # és a VB csapatok írták az fordítót, ezért a Visual Studio sablonok mindkettőhöz elérhetők. Ez lehetővé teszi számunkra, hogy írjunk egy kódot, amely elemzi a forrásfájlt, és könnyű a számunkra a forráskód módosítása.

Az alábbiakban bemutatjuk a Roslyn négy API rétegét

  • Scripting API: Ez a réteg futásidejű végrehajtási környezetet biztosít, és lehetővé teszi a C # szkriptnyelvként való használatát, és nincs függősége a vizuális stúdió összetevőitől.
  • Compiler API: Ezt a réteget a szintaxishoz használják, és referenciákat tartalmaz az összeállításokhoz és a forráskód fájlokhoz. Ez a réteg sem függ a vizuális stúdió összetevőitől.
  • Szolgáltatás API: Ez a réteg IntelliSense szolgáltatást, formázást, az összes hivatkozás megtalálását stb. Biztosítja az SDK tetején. Segít a projekttel kapcsolatos információk kezelésében és a projektfüggőségek kezelésében.
  • Munkaterület API: Ez a réteg elsősorban a kód elemzéséhez és az IDE-kön keresztül történő refaktoráláshoz készült. A Roslyn megkönnyíti a kódot, és olyan API-kból áll, mint például a fordító és a szolgáltatás, amely számos olyan funkciót kínál, mint a formázás, az Intellisense stb., És több nyelven támogatást nyújt. A munkaterület API-k mély információt nyújtanak a forráskódról.

2. Mono fordítók

Mono C # fordító az ECMA C # szabványok alapján. Több verziója van, olyan keretrendszerrel, mint a C # 1.0, 2.0, 3.0, 4.0. A mcs mono fordító az 1.1 keretet célozza meg, a gmcs a 2.0 keretet, míg az smcs és a dmcs a 2.1, illetve 4.0 keretet célozza.

  • mcs: Támogatja az összes C # 1.1 szolgáltatást, például anonim módszereket, nullázható típusokat, rögzített puffereket, hozzáférési módosítókat tulajdonságokon, statikus osztályokat stb.
  • gmcs : Támogatja a C # 2.0 szolgáltatásokat, például lekérdezési kifejezéseket, objektum-inicializálókat, részleges módszereket, lambda kifejezéseket, automatikusan végrehajtott tulajdonságokat stb.
  • dmcs : Támogatja a C # 4.0 szolgáltatásait, amelyek magukban foglalják a megnevezett argumentumokat, általános típusvariációt, dinamikakötést stb.

A másik fordító, mint például a RemObjects C # fordító, amely követi a C # szabványt, az EMCA specifikáció szerint, és azon kívül, hogy vannak GNU C # fordítók, amelyek megvalósítják a C # és .Net alkalmazást.

Következtetés

A C # fordító éppen olyan, mint bármely más fordító, amely a kódot gépi kódba fordítja, hogy a processzor megértse a folyamatot.

Ajánlott cikk

Ez egy útmutató az Adatbányász eszközhez. Itt tárgyaljuk a C # fordító, valamint a Just-In-Time Compiler és a C # Compiler különféle típusainak bevezetését. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. Python összeállítók
  2. Java fordító
  3. Legjobb C fordító
  4. A legjobb Java fordítók
  5. Útmutató a PHP fordítóhoz
  6. Hozzáférés-módosítók a PHP-ben

Kategória: