Phase vs Pass a fordítóban
Általában a fordító olyan számítógépes program, amely beolvassa az egyik nyelven írt programot, amelyet forrásnyelvnek neveznek, és lefordítja egy másik nyelvre, amelyet célnyelvnek neveznek. Hagyományosan a forrásnyelv olyan magas szintű nyelv volt, mint a C ++, a célnyelv pedig alacsony szintű, például az Assembly nyelv. Tehát általában a fordítók fordítóknak tekinthető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ók átmeneteinek száma az, ahányszor átmegy a forráson (vagy annak valamilyen formáján). Az összeállításokat az építkezés megkönnyítése érdekében részekre bontják. A fázist gyakran használják a fordító ilyen egyetlen független részének meghívására.
Mi a bérlet a fordítóban?
A fordítók osztályozásának szokásos módja a „passzok” száma. Általában a fordítás viszonylag erőforrásigényes folyamat, és kezdetben a számítógépeknek nem volt elegendő memóriájuk egy ilyen program elvégzéséhez, amely elvégezte a teljes munkát. A korai számítógépek hardveres erőforrásainak korlátozottsága miatt a fordítókat kisebb alprogramokra bontották, amelyek részleges munkájukat a forráskód áttekintésével („átengedéssel” a forrás vagy valamilyen más formája felett) végezték és elemzést végeztek., transzformációk és fordítási feladatok külön-külön. Tehát ettől a besorolástól függően a fordítókat egy- vagy többutas-fordítóként azonosítják.
Ahogy a neve is mutatja, az egyutas fordítók egyetlen menetben fordítanak. Könnyebb egyutasos fordítót írni, és gyorsabban teljesítenek, mint a többutas fordítók. Ezért még abban az időben, amikor erőforrás-korlátai voltak, a nyelveket úgy terveztük meg, hogy egyszeri fordításban állíthatók össze (pl. Pascal). Másrészt egy tipikus többutas fordító több fő szakaszból áll. Az első szakasz a szkenner (más néven lexikális elemző). A szkenner elolvassa a programot, és konvertálja azt zsetonok sorozatává. A második szakasz az elemző. A tokenek karakterláncát elemző fává (vagy absztrakt szintaxis fává) alakítja, amely megragadja a program szintaktikai felépítését. A következő szakasz az, amely értelmezi a szintaktikai szerkezet szemantikáját. A kódoptimalizálási és a végső kódgenerálási szakasz ezt követi.
Mi az a fordító fázisa?
A fázis kifejezés gyakran felmerül, amikor a fordító felépítéséről beszélünk. Eleinte a fordítók egyetlen, monolitikus szoftver minden egyszerű darabja volt, amelyet egy személy írt egy egyszerű nyelv összeállításához. De amikor a lefordítandó nyelv forráskódja összetetté és naggyá 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 elosztható egy fejlesztői csoport között. Továbbá javítja a modularitást és az újrafelhasználást azáltal, hogy lehetővé teszi a fázisok helyettesítését javított fázisokkal vagy további fázisok (például további optimalizálás) hozzáadását a fordítóhoz. Az összeállítás szakaszokra osztásának folyamatát a PQCC (Production Quality Compiler-Compiler Project) vezette be a Carnegie Melon Egyetemen. Bevezették a front end, middle end és back end kifejezéseket. A legtöbb fordítónak legalább két fázisa van. De általában a háttér és a front end ezeket a fázisokat foglalja magában.
Mi a különbség a fordító és a fázis között?
A Phase és a Pass két kifejezés, amelyet a fordítók területén használnak. A továbbítás egyetlen alkalom, amikor a fordító átadja (átmegy) a forráskódon vagy annak valamilyen más ábrázolásán. Jellemzően a legtöbb fordítónak legalább két fázisa van, úgynevezett elülső és hátulsó rész, miközben lehetnek egy- vagy többutasosak. A fázist a fordítók konstrukció szerinti osztályozására használják, míg a pass a fordítók osztályozására a működésük szerint.