Különbség a fázis és az átlépés között a fordítóprogramban

Különbség a fázis és az átlépés között a fordítóprogramban
Különbség a fázis és az átlépés között a fordítóprogramban

Videó: Különbség a fázis és az átlépés között a fordítóprogramban

Videó: Különbség a fázis és az átlépés között a fordítóprogramban
Videó: A kötőszó 2024, Július
Anonim

Fázis vs Pass a fordítóban

Általában a fordító egy 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 egy magas szintű nyelv volt, például a C++, a célnyelv pedig egy alacsony szintű nyelv, például az Assembly nyelv. Tehát általában a fordítók olyan fordítóknak tekinthetők, akik egyik nyelvről a másikra fordítanak. A Pass és a Phase két kifejezés, amelyet gyakran használnak a fordítóknál. Egy fordító lépéseinek száma azt jelenti, hogy hányszor megy át a forráson (vagy annak valamilyen megjelenítési formáján). A fordító az építés megkönnyítése érdekében részekre van bontva. A fázist gyakran használják a fordító egyetlen független részének meghívására.

Mit jelent a Pass egy fordítóprogramban?

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ás-igényes folyamat, és kezdetben a számítógépeknek nem volt elég memóriájuk egy ilyen program tárolására, amely a teljes munkát elvégezte volna. A korai számítógépek hardvererőforrásainak ilyen korlátozottsága miatt a fordítókat kisebb alprogramokra bontották, amelyek részben a forráskód áthaladásával végezték el feladatukat ("áthaladtak" a forráson vagy annak más formája felett), é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öbbmenetes fordítóként azonosítjuk.

Ahogy a neve is sugallja, az egymenetes fordítók egyetlen menetben fordítanak. Könnyebb egy lépéses fordítót írni, és gyorsabban teljesítenek, mint a többlépéses fordítók. Ezért még abban az időben is, amikor az erőforrások korlátozottak voltak, a nyelveket úgy tervezték, hogy egy lépésben lehessen őket fordítani (pl. Pascal). Másrészt egy tipikus többlépcsős fordító több fő szakaszból áll. Az első szakasz a szkenner (lexikális elemzőként is ismert). A Scanner beolvassa a programot, és tokenek láncává alakítja. A második szakasz az elemző. A tokenek karakterláncát elemzőfává (vagy absztrakt szintaxisfává) alakítja, amely rögzíti a program szintaktikai szerkezetét. A következő szakasz a szintaktikai szerkezet szemantikáját értelmezi. A kódoptimalizálási és az utolsó kódgenerálási szakasz ezt követi.

Mi az a fázis a fordítóprogramban?

A fázis kifejezés gyakran előkerül, amikor a fordítóprogramról beszélünk. Kezdetben a fordítók egyetlen, monolitikus szoftver minden egyszerű darabja volt, amelyet egy személy írt egy egyszerű nyelv fordítására. De amikor a fordítandó nyelv forráskódja bonyolulttá és nagytá válik, a fordító több (viszonylag független) fázisra bontott. A különböző fázisok előnye, hogy a fordítóprogram fejlesztése egy fejlesztői csapat között megosztható. Ezenkívül javítja a modularitást és az újrafelhasználást azáltal, hogy lehetővé teszi a fázisok jobbra cserélését 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 fázisokra osztásának folyamatát a PQCC (Production Quality Compiler-Compiler Project) vezette be a Carnegie Melon Egyetemen. Bevezették a front end, a middle end és a back end kifejezéseket. A legtöbb fordítóprogramnak legalább két fázisa van. De általában a hátsó és az előlap tartalmazza ezeket a fázisokat.

Mi a különbség a Phase és Pass között a Compilerben?

A Phase és Pass a fordítók területén használt két kifejezés. Az átlépés egyetlen alkalom, amikor a fordító átmegy (átmegy) a forráskódon vagy annak valamilyen más reprezentációján. Általában a legtöbb fordítónak legalább két fázisa van, az elülső rész és a hátoldal, míg ezek lehetnek egy- vagy többlépésesek. A Phase a fordítók szerkezet szerinti osztályozására szolgál, míg a pass a fordítók osztályozására szolgál működésük szerint.

Ajánlott: