Razlika između Phase i Pass u kompajleru

Razlika između Phase i Pass u kompajleru
Razlika između Phase i Pass u kompajleru

Video: Razlika između Phase i Pass u kompajleru

Video: Razlika između Phase i Pass u kompajleru
Video: Upotreba FOR kao prijedlog, kao veznik, te razlika između FOR i FOUR 2024, Srpanj
Anonim

Phase vs Pass in Compiler

Općenito, kompajler je računalni program koji čita program napisan na jednom jeziku, koji se naziva izvorni jezik, i prevodi ga na drugi jezik, koji se naziva ciljni jezik. Tradicionalno je izvorni jezik bio jezik visoke razine kao što je C++, a ciljni jezik bio je jezik niske razine kao što je asemblerski jezik. Dakle, općenito se prevoditelji mogu promatrati kao prevoditelji koji prevode s jednog jezika na drugi. Pass i Phase dva su pojma koji se često koriste kod prevoditelja. Broj prolaza kompajlera je koliko puta prelazi preko izvora (ili nekog oblika njegovog predstavljanja). Kompajler je rastavljen na dijelove radi lakše konstrukcije. Faza se često koristi za pozivanje takvog pojedinačnog neovisnog dijela kompajlera.

Što je prolaz u kompajleru?

Standardni način klasificiranja kompajlera je prema broju “prolaza”. Obično je kompajliranje proces koji zahtijeva relativno mnogo resursa i u početku računala nisu imala dovoljno memorije za držanje takvog programa koji je obavio kompletan posao. Zbog ovog ograničenja hardverskih resursa u prvim računalima, kompajleri su bili podijeljeni na manje podprograme koji su radili svoj djelomični posao prelaskom preko izvornog koda (napravili "prolaz" preko izvora ili nekog drugog njegovog oblika) i izvođenjem analize, transformacije i prevoditeljski zadaci zasebno. Dakle, ovisno o ovoj klasifikaciji, prevoditelji se identificiraju kao jednoprolazni ili višeprolazni.

Kao što ime sugerira, prevoditelji s jednim prolazom kompajliraju u jednom prolazu. Lakše je napisati prevodilac s jednim prolazom, a također rade brže od kompajlera s više prolaza. Stoga, čak i u vrijeme kada ste imali ograničenja resursa, jezici su dizajnirani tako da se mogu kompajlirati u jednom prolazu (npr. Pascal). S druge strane, tipični višeprolazni prevodilac sastoji se od nekoliko glavnih faza. Prva faza je skener (poznat i kao leksički analizator). Scanner čita program i pretvara ga u niz tokena. Druga faza je parser. Pretvara niz tokena u stablo analize (ili apstraktno sintaksno stablo), koje bilježi sintaktičku strukturu programa. Sljedeća faza je tumačenje semantike sintaktičke strukture. Nakon toga slijede faze optimizacije koda i finalna faza generiranja koda.

Što je faza u kompajleru?

Pojam faza često se pojavljuje kada se govori o konstrukciji prevoditelja. U početku su prevoditelji bili jednostavni komadi pojedinačnog, monolitnog softvera koje je napisala jedna osoba za kompilaciju jednostavnog jezika. Ali kada izvorni kod jezika koji se prevodi postane složen i velik, kompilator se rastavlja na više (relativno neovisnih) faza. Prednost postojanja različitih faza je u tome što se razvoj kompajlera može rasporediti među tim programera. Nadalje, poboljšava modularnost i ponovnu upotrebu dopuštajući da se faze zamijene poboljšanima ili da se dodatne faze (kao što su daljnje optimizacije) dodaju prevoditelju. Proces podjele kompilacije na faze uveo je PQCC (Production Quality Compiler-Compiler Project) na Sveučilištu Carnegie Melon. Uveli su pojmove front end, middle end i back end. Većina kompilatora ima najmanje dvije faze. Ali obično stražnji i prednji kraj kapsuliraju ove faze.

Koja je razlika između Phase i Pass u Compiler-u?

Phase i Pass su dva pojma koja se koriste u području kompilatora. Prolaz je jedan put kada kompilator prolazi (prolazi kroz) izvorni kod ili neki drugi njegov prikaz. Tipično, većina kompilatora ima najmanje dvije faze koje se nazivaju front end i back end, dok mogu biti jednoprolazne ili višeprolazne. Faza se koristi za klasifikaciju prevodilaca prema konstrukciji, dok se prolaz koristi za klasifikaciju prevodilaca prema načinu na koji rade.

Preporučeni: