Phase vs Pass a fordítóban
A fordító általában egy számítógépes program, amely elolvassa az egyik nyelven írt programot, amelyet forrásnyelvnek hívnak, és lefordítja azt egy másik nyelvre, amelyet célnyelvnek hívnak. Hagyományosan, a forrásnyelv olyan magas szintű nyelv volt, mint például a C ++, a célnyelv pedig alacsony szintű volt, például a közgyűlés nyelve. Tehát általában a fordítókat fordítóknak tekintjük, akik egyik nyelvről a másikra fordítanak. A Pass és a Phase két olyan kifejezés, amelyet gyakran használnak a fordítóknál. A fordító haladásának száma az a hányszor halad át a forráson (vagy annak valamilyen formájában). A fordítót részekre bontják az építés megkönnyítése érdekében. A fázist gyakran használják a fordító ilyen független részének hívására.
Mi az a pass egy fordítóban??
A fordítók osztályozásának szokásos módja az „áthaladások” száma. A fordítás általában viszonylag erőforrás-igényes folyamat, és a számítógépek kezdetben nem voltak elegendő memóriával egy olyan program tartásához, amely a teljes munkát elvégezte. A korai számítógépek hardverforrásának korlátozása miatt a fordítókat kisebb alprogramokra bontották, amelyek részleges munkát végeztek a forráskód átlépésével (átadtak egy forrást a forráson vagy annak valamilyen más formáján), és elvégezték az elemzést , átalakítások és fordítási feladatok külön-külön. Tehát, e besorolástól függően, a fordítókat azonosítják egy- vagy több-lépéses fordítóként.
Ahogy a neve is sugallja, az egypólusú fordítók egyetlen lépésben fordulnak össze. Könnyebb írni az egyoldalas fordítókat, és gyorsabban teljesítenek, mint a többirányú fordítók. Ezért még akkor is, amikor erőforrás-korlátozásokkal rendelkeztek, a nyelveket úgy tervezték meg, hogy egyutasban fordítsák őket (pl. Pascal). Másrészről egy tipikus multi-pass fordító több fő szakaszból áll. Az első lépés a szkenner (lexical analyzer néven is ismert). A szkenner elolvassa a programot, és tokenek karakterláncrá konvertálja. A második szakasz az elemző. Konvertálja a tokenek karakterláncát elemző fá (vagy absztrakt szintaxis fá), amely rögzíti a program szintaktikai felépítését. A következő szakasz az, amely értelmezi a szintaktikai struktúra szemantikáját. A kódoptimalizálási szakaszok és a végső kódgenerációs szakaszok ezt követik.
Mi az a fordító fázisa??
A fázis kifejezés gyakran fordul elő, amikor a fordítókészítésről beszélünk. A fordítók kezdetben minden egyes egyszerű monolitikus szoftver egy darabból álltak, amelyet egy ember írt egy egyszerű nyelv összeállításához. De amikor a lefordítandó nyelv forráskódja összetett és nagyméretűvé válik, a fordítót több (viszonylag független) szakaszra bontották. A különféle fázisok előnye, hogy a fordító fejlesztése terjeszthető egy fejlesztői csoport között. Ezenkívül javítja a modularitást és az újrahasználatot azáltal, hogy lehetővé teszi a fázisok javított fázisokkal való kicserélését vagy további fázisok (például további optimalizációk) felváltását a fordítóba. Az összeállítás fázisokra történő felosztásának folyamatát a PQCC (Production Quality Compiler-Compiler Project) vezette be a Carnegie Melon Egyetemen. Bemutatták az elülső, középső és hátsó fogalmakat. A legtöbb fordítónak legalább két fázisa van. De általában a hát és az elülső oldal beágyazza ezeket a fázisokat.
Mi a különbség a fázis és az átadás között a fordítóban??
A Phase és a Pass két kifejezést használnak a fordítók területén. Az átadás egy olyan alkalom, amikor a fordító átadja (átmeneti) a forráskódot vagy annak valamilyen más ábrázolását. Általában a legtöbb fordítónak legalább két fázisa van, az úgynevezett elülső és hátsó vég, ugyanakkor lehetnek egy- vagy több-lépésesek. A fázist a fordítók szerkezeti osztályozására használják, míg a pass-t a fordítók osztályozására használják a működésük szerint.