Rozdíl mezi fází a průchodem v kompilátoru

Rozdíl mezi fází a průchodem v kompilátoru
Rozdíl mezi fází a průchodem v kompilátoru

Video: Rozdíl mezi fází a průchodem v kompilátoru

Video: Rozdíl mezi fází a průchodem v kompilátoru
Video: Using Conjunctions and Connectives in English Grammar 2024, Červenec
Anonim

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 vysoké úrovně, jako je C++, a cílovým jazykem byl jazyk nízké úrovně, jako je jazyk symbolických instrukcí. Obecně lze tedy 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átorem je počet, kolikrát přechází přes zdroj (nebo nějakou formu jeho reprezentace). 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 to Pass v kompilátoru?

Standardní způsob klasifikace kompilátorů je podle počtu „průchodů“. Kompilace je obvykle proces poměrně náročný na zdroje a zpočátku neměly počítače dostatek paměti pro uložení takového programu, který provedl kompletní práci. Kvůli tomuto omezení hardwarových zdrojů v raných počítačích byly kompilátory rozděleny na menší podprogramy, které vykonávaly svou částečnou práci tím, že procházely zdrojovým kódem (prováděly „přechod“přes zdroj nebo nějakou jeho jinou formu) a prováděly analýzu., transformace a překladatelské úlohy samostatně. V závislosti na této klasifikaci jsou tedy kompilátory identifikovány jako jednoprůchodové nebo víceprůchodové.

Jak název napovídá, jednoprůchodové kompilátory se zkompilují v jediném průchodu. Je jednodušší 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é zkompilovat v jednom průchodu (např. Pascal). Na druhou stranu, typický víceprůchodový kompilátor se skládá z několika hlavních fází. První fází je skener (také známý jako lexikální analyzátor). Skener přečte program a převede jej na řetězec tokenů. Druhou fází je analyzátor. Převádí řetězec tokenů do stromu analýzy (nebo abstraktního stromu syntaxe), který zachycuje syntaktickou strukturu programu. Další fází je interpretace sémantiky syntaktické struktury. Následují fáze optimalizace kódu a konečná fáze generování kódu.

Co je to fáze v kompilátoru?

Pojem fáze se často objevuje, když mluvíte o konstrukci kompilátoru. Zpočátku byly kompilátory všechny jednoduché kusy jediného, monolitického softwaru napsaného jednou osobou pro kompilaci jednoduchého jazyka. Když se však zdrojový kód jazyka, který má být přeložen, stal 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 může být rozdělen mezi tým vývojářů. Kromě toho zlepšuje modularitu a opětovné použití tím, že umožňuje nahradit fáze vylepšenými nebo přidat další fáze (jako jsou další optimalizace) do kompilátoru. Proces rozdělení kompilace na fáze zavedl PQCC (Production Quality Compiler-Compiler Project) na Carnegie Melon University. Zavedli pojmy přední část, střední část a zadní část. Většina kompilátorů má alespoň dvě fáze. Ale obvykle zadní a přední část tyto fáze zapouzdřují.

Jaký je rozdíl mezi Phase a Pass v kompilátoru?

Phase a Pass jsou dva termíny používané v oblasti kompilátorů. Průchod je jeden okamžik, kdy kompilátor předá (projde) zdrojový kód nebo nějakou jeho jinou reprezentaci. Většina kompilátorů má obvykle alespoň dvě fáze nazývané frontend a back end, přičemž mohou být buď jednoprůchodové nebo víceprůchodové. Phase se používá ke klasifikaci kompilátorů podle konstrukce, zatímco pass se používá ke klasifikaci kompilátorů podle toho, jak fungují.

Doporučuje: