Fazė prieš leidimą kompiliatoriuje
Apskritai, kompiliatorius yra kompiuterio programa, kuri nuskaito programą, parašytą viena kalba, kuri vadinama š altinio kalba, ir išverčia ją į kitą kalbą, kuri vadinama tiksline kalba. Tradiciškai š altinio kalba buvo aukšto lygio kalba, pvz., C++, o tikslinė kalba buvo žemo lygio kalba, pvz., asamblėjos kalba. Taigi, apskritai kompiliatoriai gali būti laikomi vertėjais, kurie verčia iš vienos kalbos į kitą. Pass ir Phase yra du terminai, dažnai naudojami kompiliatoriuose. Kompiliatoriaus praėjimų skaičius yra skaičius, kiek kartų jis eina per š altinį (arba tam tikrą jo atvaizdavimo formą). Kompiliatorius yra suskirstytas į dalis, kad būtų patogiau statyti. Fazė dažnai naudojama tokiai vienai nepriklausomai kompiliatoriaus daliai iškviesti.
Kas yra leidimas kompiliatoriuje?
Standartinis kompiliatorių klasifikavimo būdas yra pagal „pradų“skaičių. Paprastai kompiliavimas yra gana daug išteklių reikalaujantis procesas ir iš pradžių kompiuteriai neturėjo pakankamai atminties tokiai programai, kuri atliko visą darbą, laikyti. Dėl šio aparatinės įrangos išteklių apribojimo ankstyvuosiuose kompiuteriuose kompiliatoriai buvo suskirstyti į mažesnes antrines programas, kurios iš dalies atliko savo darbą peržvelgdamos š altinio kodą (perleido š altinį ar kitą jo formą) ir atliko analizę., transformacijas ir vertimo užduotis atskirai. Taigi, atsižvelgiant į šią klasifikaciją, kompiliatoriai yra identifikuojami kaip vieno arba kelių eigų kompiliatoriai.
Kaip rodo pavadinimas, vieno žingsnio kompiliatoriai kompiliuoja vienu žingsniu. Vieno eigos kompiliatorius yra lengviau parašyti, be to, jie veikia greičiau nei kelių eigų kompiliatoriai. Todėl net ir tuo metu, kai buvo riboti ištekliai, kalbos buvo sukurtos taip, kad jas būtų galima sudaryti vienu žingsniu (pvz., Pascal). Kita vertus, tipiškas kelių eilių kompiliatorius susideda iš kelių pagrindinių etapų. Pirmasis etapas yra skaitytuvas (taip pat žinomas kaip leksinis analizatorius). Skaitytuvas nuskaito programą ir konvertuoja ją į žetonų eilutę. Antrasis etapas yra analizatorius. Jis konvertuoja žetonų eilutę į analizavimo medį (arba abstrakčią sintaksės medį), kuris fiksuoja programos sintaksinę struktūrą. Kitas etapas yra sintaksinės struktūros semantikos aiškinimas. Toliau seka kodo optimizavimo etapai ir paskutinis kodo generavimo etapas.
Kas yra kompiliatoriaus fazė?
Sąvoka fazė dažnai iškyla kalbant apie kompiliatoriaus kūrimą. Iš pradžių kompiliatoriai buvo visos paprastos monolitinės programinės įrangos dalys, kurias parašė vienas asmuo, kad galėtų sudaryti paprastą kalbą. Tačiau kai verčiamos kalbos š altinio kodas tampa sudėtingas ir didelis, kompiliatorius buvo suskirstytas į kelias (santykinai nepriklausomas) fazes. Skirtingų etapų pranašumas yra tas, kad kompiliatoriaus kūrimas gali būti paskirstytas tarp kūrėjų komandos. Be to, jis pagerina moduliškumą ir pakartotinį naudojimą, nes leidžia fazes pakeisti patobulintomis arba pridėti papildomų fazių (pvz., tolesnio optimizavimo) į kompiliatorių. Kompiliacijos padalijimo į fazes procesą pristatė PQCC (Production Quality Compiler-Compiler Project) Carnegie Melon universitete. Jie pristatė terminus priekinis galas, vidurinis galas ir galinis galas. Dauguma kompiliatorių turi bent dvi fazes. Tačiau paprastai šias fazes apima galinė ir priekinė dalis.
Kuo skiriasi kompiliatoriaus fazė ir leidimas?
Phase ir Pass yra du terminai, vartojami kompiliatorių srityje. Perėjimas yra vienas kartas, kai kompiliatorius pereina (pereina) š altinio kodą ar kitą jo atvaizdą. Paprastai daugumoje kompiliatorių yra bent dvi fazės, vadinamos priekine ir galine, nors jos gali būti vieno arba kelių eilių. Fazė naudojama kompiliatoriams klasifikuoti pagal konstrukciją, o leidimas naudojamas kompiliatoriams klasifikuoti pagal tai, kaip jie veikia.