Razlika Med Fazo In Podajo V Prevajalniku

Razlika Med Fazo In Podajo V Prevajalniku
Razlika Med Fazo In Podajo V Prevajalniku

Video: Razlika Med Fazo In Podajo V Prevajalniku

Video: Razlika Med Fazo In Podajo V Prevajalniku
Video: Классический вязаный крючком бюстгальтер для начинающих | Выкройка и руководство DIY 2024, April
Anonim

Phase vs Pass v Compilerju

Na splošno je prevajalnik računalniški program, ki bere program, napisan v enem jeziku, ki se imenuje izvorni jezik, in ga prevede v drug jezik, ki se imenuje ciljni jezik. Tradicionalno je bil izvorni jezik jezik visoke ravni, kot je C ++, ciljni jezik pa jezik nizke ravni, kot je skupščinski jezik. Tako je na splošno prevajalce mogoče razumeti kot prevajalce, ki prevajajo iz enega jezika v drugega. Pass in Phase sta dva izraza, ki se pogosto uporabljata pri prevajalnikih. Število prehodov prevajalnika je število prehodov preko vira (ali neke oblike njegove predstavitve). Prevajalnik je razčlenjen na dele zaradi lažje gradnje. Faza se pogosto uporablja za klicanje takšnega neodvisnega dela prevajalnika.

Kaj je prelaz v prevajalniku?

Standardni način razvrščanja prevajalnikov je po številu »prehodov«. Običajno je sestavljanje procesov, ki zahtevajo precej virov, in računalniki sprva niso imeli dovolj pomnilnika za tak program, ki je opravil celotno delo. Zaradi te omejitve virov strojne opreme v zgodnjih računalnikih so bili prevajalniki razdeljeni na manjše podprograme, ki so delno opravili svoje delo, tako da so prešli nad izvorno kodo (naredili "prehod" nad virom ali drugo obliko) in izvedli analizo, transformacije in prevajalske naloge ločeno. Torej so prevajalniki, odvisno od te klasifikacije, označeni kot enoprehodni ali večprehodni prevajalniki.

Kot že ime pove, enoprehodni prevajalniki prevedejo v enem prehodu. Lažje je napisati enoprehodni prevajalnik in tudi oni delujejo hitreje kot večprehodni prevajalniki. Tudi takrat, ko ste imeli omejitve virov, so bili jeziki zasnovani tako, da jih je bilo mogoče zbrati v enem prehodu (npr. Pascal). Po drugi strani pa je tipičen večprehodni prevajalnik sestavljen iz več glavnih stopenj. Prva stopnja je optični bralnik (znan tudi kot leksikalni analizator). Scanner prebere program in ga pretvori v niz žetonov. Druga stopnja je razčlenjevalnik. Niz žetonov pretvori v drevo za razčlenitev (ali drevo abstraktne sintakse), ki zajame skladenjsko strukturo programa. Naslednja stopnja je razlaga semantike skladenjske strukture. Temu sledijo stopnje optimizacije kode in končna generacija kode.

Kaj je faza v prevajalniku?

Izraz faza se pogosto pojavi, ko govorite o konstrukciji prevajalnika. Sprva so bili prevajalniki vsi preprosti kosi posamezne monolitne programske opreme, ki jih je za sestavljanje preprostega jezika napisala ena oseba. Toda ko postane izvorna koda jezika, ki ga je treba prevesti, zapletena in velika, je bil prevajalnik razdeljen na več (sorazmerno neodvisnih) faz. Prednost različnih faz je v tem, da lahko razvoj prevajalnika porazdelimo med skupino razvijalcev. Poleg tega izboljšuje modularnost in ponovno uporabo tako, da omogoča nadomeščanje faz z izboljšanimi ali dodajanje dodatnih faz (kot so nadaljnje optimizacije) v prevajalnik. Postopek delitve kompilacije na faze je uvedel PQCC (Project Quality Compiler-Compiler Project) na Univerzi Carnegie Melon. Uvedli so izraze sprednji, srednji in zadnji del. Večina prevajalnikov ima vsaj dve fazi. Toda ponavadi zadnji del in sprednji del zajemata te faze.

Kakšna je razlika med Phase in Pass v Compilerju?

Phase in Pass sta dva izraza, ki se uporabljata na področju prevajalnikov. Prehod je enkraten čas, ko prevajalnik preide (gre skozi) izvorno kodo ali katero drugo njeno predstavitev. Običajno ima večina prevajalnikov vsaj dve fazi, imenovani sprednji in zadnji konec, medtem ko sta lahko bodisi enoprehodna bodisi večprehodna. Faza se uporablja za razvrščanje prevajalnikov glede na konstrukcijo, medtem ko se pass uporablja za razvrščanje prevajalnikov glede na njihovo delovanje.

Priporočena: