Phase vs Pass kompiliatoriuje
Apskritai, kompiliatorius yra kompiuterinė programa, kuri nuskaito programa, parašyta viena kalba, kuri vadinama šaltinio kalba, ir verčia ją į kitą kalbą, vadinamą tiksline kalba. Tradiciškai šaltinio kalba buvo aukšto lygio kalba, tokia kaip C ++, o tikslinė kalba buvo žemo lygio, pavyzdžiui, susirinkimo kalba. Taigi apskritai sudarytojai gali būti vertinami kaip vertėjai, verčiantys iš vienos kalbos į kitą. Pass ir Phase yra du terminai, dažnai naudojami kompiliatoriuose. Kompiliatoriaus leidimų skaičius yra tai, kiek kartų jis peržengia šaltinį (arba tam tikrą jo pateikimo formą). Kompiliatorius yra suskirstytas į dalis, kad būtų patogiau statyti. Fazė dažnai naudojama vadinti tokią atskirą kompiliatoriaus dalį.
Kas yra leidimas kompiliatoriuje?
Standartinis kompiliatorių klasifikavimo būdas yra „leidimų“ skaičius. Paprastai kompiliavimas yra gana daug išteklių reikalaujantis procesas ir iš pradžių kompiuteriai neturėjo pakankamai atminties, kad galėtų laikyti tokią programą, kuri atliktų visą darbą. Dėl šio ankstyvųjų kompiuterių techninės įrangos išteklių apribojimo kompiliatoriai buvo suskirstyti į mažesnes paprogrames, kurios atliko savo dalinį darbą perėję šaltinio kodą („perleido“ šaltinį ar kitą jo formą) ir atliko analizę , transformacijos ir vertimo užduotys atskirai. Taigi, atsižvelgiant į šią klasifikaciją, kompiliatoriai yra identifikuojami kaip vieno ar kelių leidimų kompiliatoriai.
Kaip rodo pavadinimas, vieno leidimo sudarytojai susideda iš vieno leidimo. Paprasčiau parašyti vieno leidimo kompiliatorių, be to, jie veikia greičiau nei daugiapakopiai kompiliatoriai. Todėl net tuo metu, kai turėjote išteklių apribojimus, kalbos buvo suprojektuotos taip, kad jas būtų galima sudaryti vienu leidimu (pvz., Pascal). Kita vertus, tipinis kelių leidimų kompiliatorius yra sudarytas iš kelių pagrindinių etapų. Pirmasis etapas yra skaitytuvas (dar žinomas kaip leksinis analizatorius). Skaitytuvas skaito programą ir paverčia ją žetonų eilute. Antrasis etapas yra analizatorius. Tai konvertuoja žetonų eilutę į analizuojamąjį medį (arba abstrakčiąjį sintaksės medį), kuriame užfiksuota sintaksinė programos struktūra. Kitas etapas aiškina sintaksinės struktūros semantiką. Kodo optimizavimo etapai ir paskutinis kodo generavimo etapas seka tuo.
Kas yra kompiliatoriaus fazė?
Terminas etapas dažnai iškyla, kai jūs kalbate apie kompiliatoriaus kūrimą. Iš pradžių kompiliatoriai buvo visi paprasti monolitinės programinės įrangos, kurią parašė vienas asmuo paprastos kalbos sudarymui, fragmentai. Bet kai išverstinos kalbos išeities kodas tampa sudėtingas ir didelis, kompiliatorius buvo suskirstytas į kelias (palyginti nepriklausomas) fazes. Skirtingų fazių pranašumas yra tas, kad kompiliatoriaus tobulinimas gali būti paskirstytas kūrėjų komandai. Be to, jis pagerina moduliavimą ir pakartotinį naudojimą, leisdamas fazes pakeisti patobulintomis arba papildomas fazes (tokias kaip tolesnis optimizavimas), kurias galima pridėti prie kompiliatoriaus. Kompiliacijos padalijimo į fazes procesą pristatė PQCC (produkcijos kokybės sudarytojo-sudarytojo projektas) Carnegie Melon universitete. Jie pristatė terminus „front end“, „middle end“ ir „back end“. Dauguma kompiliatorių turi bent dvi fazes. Tačiau paprastai užpakalinis ir priekinis galai apima šias fazes.
Kuo skiriasi kompiliatorius tarp fazės ir išlaikymo?
Fazė ir išlaikymas yra du terminai, naudojami kompiliatorių srityje. Leidimas - tai vienas kartas, kai kompiliatorius pereina (pereina) šaltinio kodą ar kitą jo atvaizdą. Paprastai dauguma kompiliatorių turi bent dvi fazes, vadinamas priekine ir galine dalimis, tuo tarpu jos gali būti vienos ar daugiapakopės. Fazė naudojama kompiliatoriams klasifikuoti pagal konstrukciją, o leidimas - kompiliatoriams klasifikuoti pagal tai, kaip jie veikia.