Fáze vs Pass v kompilátoru
Obecně je překladač 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. Zdrojovým jazykem byl tradičně jazyk na vysoké úrovni, například C ++, a cílovým jazykem byl jazyk na nízké úrovni, jako je jazyk Assembly. Obecně lze překladače považovat za překladače, kteří překládají z jednoho jazyka do druhého. Pass a Phase jsou dva termíny, které se kompilátory často používají. Počet průchodů kompilátoru je počet překročení zdroje (nebo nějaká forma jeho reprezentace). Pro usnadnění konstrukce je kompilátor rozdělen na části. Fáze se často používá k volání takové jediné nezávislé části kompilátoru.
Co je to Pass v kompilátoru?
Standardní způsob klasifikace překladačů je podle počtu „průchodů“. Kompilace je obvykle proces relativně náročný na zdroje a počítače zpočátku neměly dostatek paměti k uložení takového programu, který provedl kompletní práci. Kvůli tomuto omezení hardwarových prostředků v časných počítačích byli kompilátoři rozděleni na menší podprogramy, které provedly částečnou práci tím, že přešly zdrojový kód (provedly „předání“nad zdrojem nebo jeho jinou formou) a provedly analýzu, transformace a překladatelské úkoly samostatně. V závislosti na této klasifikaci jsou tedy kompilátoři identifikováni jako jednopásmové nebo vícepásmové kompilátory.
Jak název napovídá, kompilátory s jedním průchodem se kompilují v jednom průchodu. Je snazší napsat jednoprůchodový kompilátor a také fungují rychleji než víceprůchodové kompilátory. Proto i v době, kdy jste měli omezení zdrojů, byly jazyky navrženy tak, aby je bylo možné kompilovat v jednom průchodu (např. Pascal). Na druhou stranu je typický vícepásmový kompilátor tvořen několika hlavními fázemi. První fází je skener (také známý jako lexikální analyzátor). Skener načte program a převede jej na řetězec žetonů. Druhou fází je analyzátor. Převádí řetězec tokenů na analyzovaný strom (nebo abstraktní syntaxový strom), který zachycuje syntaktickou strukturu programu. Další fází je interpretace sémantiky syntaktické struktury. Následují fáze optimalizace kódu a fáze finálního generování kódu.
Co je to fáze v kompilátoru?
Termín fáze se často objevuje, když hovoříte o konstrukci kompilátoru. Zpočátku byly kompilátory všechny jednoduché části jediného monolitického softwaru napsaného jednou osobou pro kompilaci jednoduchého jazyka. Ale když se zdrojový kód jazyka, který má být přeložen, stane složitým a velkým, kompilátor byl rozdělen do několika (relativně nezávislých) fází. Výhodou různých fází je, že vývoj kompilátoru lze distribuovat mezi tým vývojářů. Dále zlepšuje modularitu a opětovné použití tím, že umožňuje, aby byly fáze nahrazeny vylepšenými nebo aby byly do kompilátoru přidány další fáze (například další optimalizace). Proces rozdělení kompilace na fáze představil PQCC (Production Quality Compiler-Compiler Project) na Carnegie Melon University. Představili pojmy přední konec, střední konec a zadní konec. Většina překladačů má alespoň dvě fáze. Ale obvykle tyto fáze zapouzdřují zadní část a přední část.
Jaký je rozdíl mezi fází a předáním v kompilátoru?
Phase a Pass jsou dva výrazy používané v oblasti překladačů. Průchod je jednorázový kompilátor, který předává (prochází) zdrojový kód nebo jeho jinou reprezentaci. Většina překladačů má obvykle alespoň dvě fáze, které se nazývají front-end a back-end, zatímco mohou být jednopásmové nebo vícepásmové. Fáze se používá ke klasifikaci kompilátorů podle konstrukce, zatímco pass se používá ke klasifikaci kompilátorů podle toho, jak fungují.