Forskjellen Mellom Phase Og Pass In Compiler

Forskjellen Mellom Phase Og Pass In Compiler
Forskjellen Mellom Phase Og Pass In Compiler

Video: Forskjellen Mellom Phase Og Pass In Compiler

Video: Forskjellen Mellom Phase Og Pass In Compiler
Video: Phases of a Compiler Example 2024, November
Anonim

Phase vs Pass in Compiler

Generelt er kompilator et dataprogram som leser et program skrevet på ett språk, som kalles kildespråket, og oversetter det til et annet språk, som kalles målspråket. Tradisjonelt var kildespråk et høyt nivå språk som C ++ og målspråk var et lavt nivå språk som Assembly språk. Generelt kan kompilatorer sees på som oversettere som oversetter fra ett språk til et annet. Pass and Phase er to begreper som ofte brukes med kompilatorer. Antall passeringer av en kompilator er antall ganger den går over kilden (eller en eller annen form for representasjon av den). En kompilator er delt inn i deler for enkelhets skyld i konstruksjonen. Fase brukes ofte til å kalle en slik uavhengig del av en kompilator.

Hva er et pass i en kompilator?

En standard måte å klassifisere kompilatorer på er antall "passerer". Vanligvis er kompilering en relativt ressurskrevende prosess, og datamaskiner hadde i utgangspunktet ikke nok minne til å holde et slikt program som gjorde den fullstendige jobben. På grunn av denne begrensningen av maskinvareressurser i tidlige datamaskiner, ble kompilatorer delt inn i mindre underprogrammer som gjorde sin delvise jobb ved å gå over kildekoden (gjorde et "pass" over kilden eller en annen form for det) og utførte analyse, transformasjoner og oversettelsesoppgaver hver for seg. Så, avhengig av denne klassifiseringen, blir kompilatorer identifisert som kompasskomponenter med én passering eller flerpass.

Som navnet antyder, kompilerer en-pass-kompilatorer i ett enkelt pass. Det er lettere å skrive en en-pass kompilator, og de utfører også raskere enn multi-pass kompilatorer. Derfor, selv på det tidspunktet du hadde ressursbegrensninger, ble språk utformet slik at de kunne kompileres i ett-pass (f.eks. Pascal). På den annen side består en typisk multi-pass kompilator av flere hovedetapper. Den første fasen er skanneren (også kjent som den leksikale analysatoren). Skanneren leser programmet og konverterer det til en streng med tokens. Den andre fasen er parseren. Den konverterer tokenstrengen til et parse-tre (eller et abstrakt syntaks-tre), som fanger den syntaktiske strukturen til programmet. Neste trinn er den som tolker semantikken til den syntaktiske strukturen. Kodene for optimalisering av trinn og endelig trinn for generering av kode følger dette.

Hva er en fase i en kompilator?

Begrepet fase kommer ofte opp når du snakker om kompilatorkonstruksjon. Opprinnelig var kompilatorer alle enkle biter av enkelt, monolitisk programvare skrevet av en person for å samle et enkelt språk. Men når kildekoden til språket som skal oversettes blir kompleks og stor, ble kompilatoren brutt ned i flere (relativt uavhengige) faser. Fordelen med å ha forskjellige faser er at utviklingen av kompilatoren kan distribueres mellom et team av utviklere. Videre forbedrer det modulariteten og gjenbruken ved å la fasene erstattes av forbedrede eller tilleggsfaser (for eksempel ytterligere optimaliseringer) som skal legges til kompilatoren. Prosessen med å dele samlingen i faser ble introdusert av PQCC (Production Quality Compiler-Compiler Project) ved Carnegie Melon University. De introduserte begrepene front-, mellom- og bakenden. De fleste kompilatorer har minst to faser. Men vanligvis innkapsler bakenden og frontenden disse fasene.

Hva er forskjellen mellom Phase og Pass in Compiler?

Phase and Pass er to termer som brukes innen kompilatorer. Et pass er en enkelt gang kompilatoren passerer (går gjennom) kildekoden eller annen representasjon av den. Vanligvis har de fleste kompilatorer minst to faser kalt frontend og backend, mens de kan være enten en-pass eller multi-pass. Fase brukes til å klassifisere kompilatorer i henhold til konstruksjonen, mens pass brukes til å klassifisere kompilatorer etter hvordan de fungerer.

Anbefalt: