Fáza vs Pass v kompilátor
Všeobecne je kompilátor 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. Tradične bol zdrojovým jazykom jazyk na vysokej úrovni, ako napríklad C ++, a cieľovým jazykom bol jazyk na nízkej úrovni, napríklad jazyk Assembly. Všeobecne možno prekladateľov chápať ako prekladateľov, ktorí prekladajú z jedného jazyka do druhého. Pass a Phase sú dva termíny často používané s kompilátormi. Počet priechodov kompilátora je počet prekročení zdroja (alebo nejaká forma jeho zobrazenia). Kompilátor je rozdelený na časti kvôli lepšej konštrukcii. Fáza sa často používa na volanie takejto samostatnej časti kompilátora.
Čo je Pass v kompilátore?
Štandardný spôsob klasifikácie kompilátorov je podľa počtu „prechodov“. Zostavovanie je zvyčajne proces, ktorý je pomerne náročný na prostriedky, a spočiatku počítače nemali dostatok pamäte na uloženie takého programu, ktorý vykonal celú úlohu. Kvôli tomuto obmedzeniu hardvérových zdrojov v počiatočných počítačoch boli kompilátory rozdelené na menšie podprogramy, ktoré vykonali svoju čiastočnú prácu tým, že prešli zdrojový kód (urobili „prechod“ cez zdroj alebo nejakú inú formu) a vykonali analýzu. , transformačné a prekladateľské úlohy osobitne. Takže podľa tejto klasifikácie sú kompilátory označené ako kompilátory s jedným alebo viac priechodmi.
Ako už názov napovedá, kompilátory s jedným priechodom sa kompilujú do jedného priechodu. Je ľahšie písať kompilátor s jedným priechodom a tiež fungujú rýchlejšie ako kompilátory s viacerými priechodmi. Preto aj v čase, keď ste mali obmedzenia zdrojov, boli jazyky navrhnuté tak, aby sa dali skompilovať v jednom priechode (napr. Pascal). Na druhej strane typický viacpriechodový kompilátor sa skladá z niekoľkých hlavných etáp. Prvým stupňom je skener (známy aj ako lexikálny analyzátor). Skener číta program a prevádza ho do reťazca tokenov. Druhou fázou je syntaktický analyzátor. Konvertuje reťazec tokenov na syntaktický strom (alebo abstraktný syntaxový strom), ktorý zachytáva syntaktickú štruktúru programu. Ďalšou fázou je interpretácia sémantiky syntaktickej štruktúry. Nasledujú fázy optimalizácie kódu a konečná fáza generovania kódu.
Čo je fáza v prekladači?
Fáza fázy sa často objavuje, keď hovoríte o konštrukcii kompilátora. Spočiatku boli kompilátory každý jednoduchý kus monolitického softvéru, ktorý napísala jedna osoba na zostavenie 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 viacerých (relatívne nezávislých) fáz. Výhodou rôznych fáz je, že vývoj kompilátora je možné rozdeliť medzi tím vývojárov. Ďalej zlepšuje modularitu a opätovné použitie tým, že umožňuje, aby sa fázy nahradili vylepšenými alebo aby sa do kompilátora pridali ďalšie fázy (ako sú ďalšie optimalizácie). Proces rozdelenia kompilácie na fázy predstavil PQCC (Project Quality Compiler-Compiler Project) na Carnegie Melon University. Zaviedli pojmy front-end, mid-end a back-end. Väčšina kompilátorov má najmenej dve fázy. Zvyčajne však tieto fázy zapuzdruje zadný a predný koniec.
Aký je rozdiel medzi fázou a prechodom v kompilátore?
Phase a Pass sú dva pojmy používané v oblasti kompilátorov. Prechod je jednorazový prekladač, ktorý prechádza (prechádza) zdrojovým kódom alebo inou jeho reprezentáciou. Väčšina kompilátorov má zvyčajne najmenej dve fázy nazývané predný a zadný koniec, zatiaľ čo môžu byť buď jednopriechodové alebo viacpriechodové. Fáza sa používa na klasifikáciu kompilátorov podľa konštrukcie, zatiaľ čo priechod sa používa na klasifikáciu kompilátorov podľa toho, ako fungujú.