Rozdiel Medzi Fázou A Prechodom V Kompilátore

Rozdiel Medzi Fázou A Prechodom V Kompilátore
Rozdiel Medzi Fázou A Prechodom V Kompilátore

Video: Rozdiel Medzi Fázou A Prechodom V Kompilátore

Video: Rozdiel Medzi Fázou A Prechodom V Kompilátore
Video: Написание 2D-игр на C с использованием SDL Томаса Лайвли 2024, Apríl
Anonim

Phase vs Pass v kompilátore

Kompilátor je vo všeobecnosti počítačový program, ktorý číta program napísaný v jednom jazyku, ktorý sa nazýva zdrojový jazyk, a prekladá ho do iného jazyka, ktorý sa nazýva cieľový jazyk. Pôvodným zdrojovým jazykom bol tradične jazyk na vysokej úrovni, napríklad C ++, a cieľovým jazykom, ktorý bol na nízkej úrovni, napríklad jazyk assembleri. Všeobecne sa teda na prekladateľov dá pozerať ako na prekladateľov, ktorí prekladajú z jedného jazyka do druhého. Pass a Phase sú dva výrazy, ktoré sa často používajú v prekladačoch. Počet prechodov kompilátora je počet prechodov zdrojom (alebo nejaká jeho forma znázornenia). Pre uľahčenie konštrukcie je kompilátor rozdelený na jednotlivé časti. Fáza sa často nazýva takouto samostatnou časťou kompilátora.

Čo je to Pass v kompilátore?

Štandardný spôsob klasifikácie prekladačov je podľa počtu „prechodov“. Zvyčajne je kompilácia proces relatívne náročný na zdroje a spočiatku počítače nemali dostatok pamäte na uloženie takého programu, ktorý zvládol celú prácu. Kvôli tomuto obmedzeniu hardvérových zdrojov v raných počítačoch sa kompilátory rozdelili na menšie podprogramy, ktoré vykonali čiastočnú prácu tak, že prešli zdrojový kód („prešli“cez zdroj alebo jeho inú formu) a vykonali analýzu, transformácie a prekladateľské úlohy osobitne. Takže v závislosti od tejto klasifikácie sú kompilátory identifikované ako jednoprechodové alebo viacprechodové kompilátory.

Ako už názov napovedá, jednopriechodové kompilátory sa zostavujú v jednom priechode. Je jednoduchšie napísať jednopriechodový kompilátor a tiež pracujú rýchlejšie ako viacpriechodové kompilátory. Preto aj v čase, keď ste mali obmedzenia zdrojov, boli jazyky navrhnuté tak, aby ich bolo možné kompilovať jedným prechodom (napr. Pascal). Na druhej strane, typický viacprechodový kompilátor je zložený z niekoľkých hlavných etáp. Prvým stupňom je skener (tiež známy ako lexikálny analyzátor). Skener načíta program a prevedie ho na reťazec žetónov. Druhou etapou je syntaktický analyzátor. Konvertuje reťazec tokenov do syntaktického stromu (alebo abstraktného stromu syntaxe), ktorý zachytáva syntaktickú štruktúru programu. Ďalšou etapou je interpretácia sémantiky syntaktickej štruktúry. Nasledujú fázy optimalizácie kódu a záverečné štádium generovania kódu.

Čo je to fáza v kompilátore?

Termín fáza sa často objaví, keď hovoríte o konštrukcii kompilátora. Spočiatku boli kompilátory všetky jednoduché časti jediného monolitického softvéru napísaného jednou osobou na kompiláciu jednoduchého jazyka. Ale keď sa zdrojový kód jazyka, ktorý sa má preložiť, stane zložitým a veľkým, kompilátor bol rozdelený do niekoľkých (relatívne nezávislých) fáz. Výhodou rôznych fáz je, že vývoj kompilátora je možné distribuovať medzi tím vývojárov. Ďalej vylepšuje modularitu a opätovné použitie tým, že umožňuje nahradiť fázy vylepšenými alebo do kompilátora pridať ďalšie fázy (napríklad ďalšie optimalizácie). Proces rozdelenia kompilácie na fázy zaviedol PQCC (Production Quality Compiler-Compiler Project) na Carnegie Melon University. Zaviedli výrazy predný, stredný a zadný koniec. Väčšina prekladačov má minimálne dve fázy. Ale zvyčajne tieto fázy zapuzdruje zadný a predný koniec.

Aký je rozdiel medzi fázou a prechodom v kompilátore?

Phase a Pass sú dva výrazy používané v oblasti prekladačov. Pass je jednorazový pokus, ktorý kompilátor odovzdá (prejde) zdrojový kód alebo nejaké iné jeho vyjadrenie. Väčšina prekladačov má zvyčajne najmenej dve fázy, ktoré sa nazývajú front-end a back-end, pričom môžu byť jednopriechodové alebo viacpriechodové. Fáza sa používa na klasifikáciu kompilátorov podľa konštrukcie, zatiaľ čo pass sa používa na klasifikáciu kompilátorov podľa toho, ako fungujú.

Odporúčaná: