Különbség Phase és Pass a fordítóban

Anonim

Phase vs Pass in Compiler

Általában a fordító számítógépes program, egy nyelven írt programot, amelyet forrásnyelvnek neveznek, és azt egy másik nyelvre fordítja, amelyet a célnyelvnek neveznek. Hagyományosan a forrásnyelv olyan magas szintű nyelv volt, mint a C + + és a célnyelv alacsony szintű nyelv volt, mint például a Assembly nyelv. Tehát a fordítók általában olyan fordítóként tekinthetők meg, amelyek az egyik nyelvről a másikra fordítanak. A Pass és a Phase két kifejezés, melyeket gyakran használnak a fordítókkal. A fordítószámok száma a forrás (vagy annak valamilyen formája) hányszor halad át. A fordító az alkatrészekre bontásra kerül az építési kényelem érdekében. A fázist gyakran használják egy fordító ilyen egyetlen független részének hívására.

Mi az a passz a fordítóban?

A fordítószámok osztályozásának szokásos módja a "járatok" száma. Általában a fordítás viszonylag erőforrásigényes folyamat, és először a számítógépeknek nem volt elég memória ahhoz, hogy olyan programot tartsanak, amely a teljes munkát elvégezte. A korai számítógépek hardvereszközeinek ilyen korlátozása miatt a fordítóprogramokat apróbb alprogramokra bontották, amelyek részleges munkát végeztek a forráskód megkerülésével ("forrás" vagy "más forrás"), transzformációk és fordítási feladatok külön-külön. Tehát, az osztályozástól függően a fordítóprogramokat egylépcsős vagy többszörös átjáróként azonosítják.

Ahogy a név is sugallja, az egyablakos fordítók egyetlen lépésben összeállíthatók. Könnyebb írni egy egyszeles fordítót, és gyorsabban végeznek, mint a többszörös átjárók. Ezért még abban az időben is, amikor erőforrás-korlátai voltak, a nyelveket úgy tervezték meg, hogy azokat egyablakos (pl. Pascal) könyvtárban lehessen összeállítani. Másrészről, egy tipikus többút-fordító több fő szakaszból áll. Az első szakasz a szkenner (más néven lexikai analizátor). A szkenner elolvassa a programot, és egy tokenekké konvertálja. A második szakasz az elemző. A tokenek sztringjét átalakítja egy elemzőfához (vagy absztrakt szintaxisfahoz), amely rögzíti a program szintaktikai struktúráját. A következő szakasz az értelmezi a szintaktikai struktúra szemantikáját. A kód-optimalizálás szakaszai és a végső kód létrehozása ezt követi.

Mi a fordítóban egy szakasz?

A kifejezés fázis gyakran előfordul, amikor a fordító felépítéséről beszél. Kezdetben a fordítók voltak minden egyszerű darab egyszeri, monolitikus szoftver, amelyet egy személy írt egy egyszerű nyelv összeállításához. De amikor a lefordítandó nyelv forráskódja összetett és nagy, akkor a fordítót több (viszonylag független) fázisra bontották le.A különböző fázisok előnye, hogy a fordító fejlesztése a fejlesztők csapata között osztható meg. Ezenkívül javítja a modularitást és az újrafelhasználást úgy, hogy lehetővé teszi a fázisok javítását, vagy a fordítóhoz hozzáadandó további fázisokat (például további optimalizálást). A gyűjtemény fázisokra való felosztásának folyamatát a Carnegie Melon Egyetem PQCC (Production Quality Compiler-Compiler Project) vezette be. Bevezették az elülső, a középső és a hátsó terminust. A legtöbb fordítónak legalább két fázisa van. De általában a hátsó és az elülső rész zárja be ezeket a fázisokat.

Mi a különbség a fordító és a fordító között?

A Phase és a Pass a fordítók területén használt két kifejezés. A pass egyszeri alkalommal, amikor a fordító áthalad (átmegy) a forráskódot vagy annak valamilyen más ábrázolását. Jellemzően a legtöbb fordítónak legalább két fázisa van, amelyek elülső és hátulsó végnek nevezhetők, miközben lehetnek egyablakos vagy többszörös átjárók. A fázist a szerkesztők osztályozásának osztályozására használják, míg a fordítót a fordítóprogramok besorolásának megfelelően használják.