Fase vs Pass i kompilator
Generelt er kompilatoren 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 språk på høyt nivå som C ++ og målspråket var et lavnivå språk som Assembly Language. Så generelt kan kompilatorer bli sett på som oversettere som oversetter fra ett språk til et annet. Pass og fase er to ord som ofte brukes sammen med kompilatorer. Antall passerer av en kompilator er antall ganger det går over kilden (eller noen form for representasjon av det). En kompilator er delt inn i deler for å gjøre det enklere å bygge. Fase brukes ofte til å ringe til en slik uavhengig del av en kompilator.
Hva er et pass i en kompilator?
En standard måte å klassifisere kompilatorer er ved antall "passerer". Vanligvis er kompilering en relativt ressursintensiv prosess, og i utgangspunktet hadde datamaskiner ikke nok minne til å holde et slikt program som gjorde hele jobben. På grunn av denne begrensningen av maskinvareressurser i tidlige datamaskiner, ble kompilatorer oppdelt i mindre delprogrammer som gjorde sin delvise jobb ved å gå over kildekoden (gjort et "pass" over kilden eller en annen form for det) og utført analyse , transformasjoner og oversettelsesoppgaver separat. Så, avhengig av denne klassifiseringen, er kompilatorer indentified som en-pass eller multi-pass kompilatorer.
Som navnet antyder, kompilerer en-pass-kompilatorer i et enkelt pass. Det er lettere å skrive en en-pass kompilator, og de utfører også raskere enn multi-pass kompilatorer. Derfor, selv når du hadde ressursbegrensninger, ble språk utformet slik at de kunne kompileres i et en-pass (for eksempel Pascal). På den annen side består en typisk multi-pass kompilator av flere hovedfaser. Det første trinnet er skanneren (også kjent som den leksikalske analysatoren). Skanneren leser programmet og konverterer det til en streng med tokens. Den andre fasen er parseren. Den konverterer strengen av tokens til et parse-tre (eller et abstrakt syntaks-tre), som fanger opp den syntaktiske strukturen til programmet. Neste trinn er det som tolker semantikken til den syntaktiske strukturen. Koden optimalisering stadier og endelig kode generering scenen følger dette.
Hva er en fase i en kompilator?
Termen fase kommer ofte opp når du snakker om kompilatorkonstruksjon. I utgangspunktet var kompilatorer alle enkle stykker av enkeltmonolittisk programvare skrevet av en person for å samle et enkelt språk. Men når kildekoden til språket som skal oversettes blir komplisert og stor, ble kompilatoren brutt ned i flere (relativt uavhengige) faser. Fordelen med å ha forskjellige faser er at utviklingen av kompilatoren kan distribueres blant et team av utviklere. Videre forbedrer den modulariteten og gjenbruk ved å tillate faser å bli erstattet av forbedrede eller flere faser (for eksempel ytterligere optimaliseringer) som skal legges til kompilatoren. Prosessen med å dele opp samlingen i faser ble introdusert av PQCC (Production Quality Compiler-Compiler Project) ved Carnegie Melon University. De introduserte betingelsene frontend, midterste og bakre ende. De fleste kompilatorer har minst to faser. Men vanligvis, bakenden og forsiden innkapsler disse fasene.
Hva er forskjellen mellom fase og pass i kompilator?
Fase og pass er to begreper som brukes i kompilatørområdet. Et pass er en enkelt gang kompilatoren passerer over (går gjennom) kilden koden eller en annen representasjon av det. Vanligvis har de fleste kompilatorer minst to faser kalt forkant og bakre ende, mens de kan være enten one-pass eller multi-pass. Fase brukes til å klassifisere kompilatorer i henhold til konstruksjonen, mens pass brukes til å klassifisere kompilatorer i henhold til hvordan de fungerer.