Fáze vs Pass v kompilátoru
Obecně je kompilátor počítačový program, který čte program napsaný v jednom jazyce, který se nazývá zdrojový jazyk, a překládá jej do jiného jazyka, který se nazývá cílový jazyk. Tradičně byl zdrojovým jazykem jazyk na vysoké úrovni, jako je C ++, a cílovým jazykem byl jazyk na nízké úrovni, jako je například jazyk Shromáždění. Obecně tedy lze kompilátory považovat za překladatele, kteří překládají z jednoho jazyka do druhého. Pass a Phase jsou dva termíny často používané s kompilátory. Počet průchodů kompilátoru je počet překročení zdroje (nebo nějaká forma jeho zobrazení). Kompilátor je pro usnadnění konstrukce rozdělen na části. Fáze se často používá k volání takové jediné nezávislé části kompilátoru.
Co je průchod v kompilátoru?
Standardní způsob klasifikace kompilátorů je podle počtu „průchodů“. Kompilace je obvykle relativně náročná na zdroje a počítače původně neměly dostatek paměti pro uložení takového programu, který provedl celou úlohu. Kvůli tomuto omezení hardwarových prostředků v počátečních počítačích byly kompilátory rozděleny do menších podprogramů, které vykonaly částečnou práci tím, že prošly zdrojovým kódem (provedly „průchod“ přes zdroj nebo nějakou jinou formu) a provedly analýzu , transformace a překladové úkoly samostatně. Takže v závislosti na této klasifikaci jsou kompilátory označeny jako jednopásmové nebo vícenásobné kompilátory.
Jak název napovídá, kompilátory s jedním průchodem se kompilují do jednoho průchodu. Je snadnější napsat kompilátor s jedním průchodem a také provádět rychleji než kompilátory s více průchody. Proto i v době, kdy jste měli omezení zdrojů, byly jazyky navrženy tak, aby mohly být kompilovány v jednom průchodu (např. Pascal). Na druhé straně typický víceprůchodový kompilátor se skládá z několika hlavních fází. První fáze je skener (známý také jako lexikální analyzátor). Skener čte program a převádí jej na řetězec tokenů. Druhou fází je syntaktický analyzátor. Převádí řetězec tokenů na strom analýzy (nebo abstraktní syntaktický strom), který zachycuje syntaktickou strukturu programu. Další fází je interpretace sémantiky syntaktické struktury. Následuje fáze optimalizace kódu a fáze finálního generování kódu.
Co je fáze v kompilátoru?
Termín fáze se často objevuje, když mluvíte o konstrukci kompilátoru. Zpočátku kompilátoři byli každý jednoduchý kus jediného monolitického softwaru napsaného jednou osobou pro sestavení jednoduchého jazyka. Když se však zdrojový kód jazyka, který má být přeložen, stává složitým a velkým, byl kompilátor rozdělen do několika (relativně nezávislých) fází. Výhodou různých fází je, že vývoj kompilátoru může být distribuován mezi tým vývojářů. Kromě toho zlepšuje modularitu a opětovné použití tím, že umožňuje nahrazení fází vylepšenými fázemi nebo přidáním dalších fází (jako jsou další optimalizace) do kompilátoru. Proces rozdělení kompilace do fází byl představen PQCC (Project Quality Compiler-Compiler Project) na Carnegie Melon University. Představili pojmy front end, mid end a back end. Většina kompilátorů má alespoň dvě fáze. Obvykle však tyto fáze zapouzdřují zadní a přední část.
Jaký je rozdíl mezi fází a průchodem v kompilátoru?
Phase and Pass jsou dva pojmy používané v oblasti kompilátorů. Průchod je jednorázový, kdy kompilátor prochází (prochází) zdrojovým kódem nebo jinou jeho reprezentací. Obvykle má většina kompilátorů alespoň dvě fáze nazývané front-end a back-end, zatímco by mohly být buď one-pass, nebo multi-pass. Fáze se používá k třídění kompilátorů podle konstrukce, zatímco průchod se používá k třídění kompilátorů podle toho, jak fungují.