Forskel mellem fase og pass i kompilator

Anonim

Fase vs Pass i kompilator

Generelt er kompilator et computerprogram, der læser en Programmet er skrevet på et sprog, som kaldes kildesproget, og oversætter det til et andet sprog, som kaldes målsproget. Traditionelt var kildesprog et højt niveau sprog som C ++ og målsprog var et lavt niveau sprog som Assembly Language. Så generelt kan kompilatorer ses som oversættere, der oversætter fra et sprog til et andet. Pass og fase er to udtryk, der ofte bruges sammen med kompilatorer. Antallet af passerer af en kompilator er det antal gange det går over kilden (eller en form for repræsentation af det). En kompilator er opdelt i dele for nemheds skyld. Fase bruges ofte til at kalde en sådan enkelt uafhængig del af en compiler.

Hvad er et pas i en kompilator?

En standard måde at klassificere kompilatorer er ved antallet af "passerer". Normalt er kompilering en relativt ressourceintensiv proces, og i starten havde computere ikke nok hukommelse til at holde et sådant program, der gjorde det komplette job. På grund af denne begrænsning af hardware ressourcer i tidlige computere blev kompilatorer opdelt i mindre underprogrammer, der gjorde sit partielle job ved at gå over kildekoden (lavet en "pass" over kilden eller en anden form for det) og udført analyse, transformationer og oversættelsesopgaver separat. Så afhængigt af denne klassifikation er kompilatorer indentificeret som en-pass eller multi-pass kompilere.

Som navnet antyder, kompilerer en-pass-kompilatorer i et enkelt pass. Det er lettere at skrive en one-pass compiler og også de udfører hurtigere end multi-pass kompilere. Derfor var sprogene designet selv på det tidspunkt, hvor du havde ressourcebegrænsninger, således at de kunne kompileres i et one-pass (f.eks. Pascal). På den anden side består en typisk multi-pass compiler af flere hovedtrin. Det første trin er scanneren (også kendt som den leksikalske analysator). Scanneren læser programmet og konverterer det til en række tokens. Det andet trin er parseren. Det konverterer strengens tokens til et parse-træ (eller et abstrakt syntaks-træ), som fanger programmets syntaktiske struktur. Næste fase er det, der fortolker semantikken i den syntaktiske struktur. Kodeoptimeringstrinnene og den endelige kodegenereringsfase følger dette.

Hvad er en fase i en kompilator?

Termen fase kommer ofte op, når du taler om kompilatorkonstruktion. I første omgang var kompilatorer alle enkle stykker af enkeltmonolitisk software skrevet af en person til udarbejdelse af et simpelt sprog. Men når kildekoden for det sprog, der skal oversættes, bliver komplekst og stort, blev kompilatoren opdelt i flere (relativt uafhængige) faser.Fordelen ved at have forskellige faser er, at udviklingen af ​​kompilatoren kan fordeles blandt et team af udviklere. Desuden forbedrer det modulariteten og genanvendelsen ved at tillade faser at blive erstattet af forbedrede eller yderligere faser (såsom yderligere optimeringer), der skal tilføjes til kompilatoren. Processen med at opdele samlingen til faser blev introduceret af PQCC (Production Quality Compiler-Compiler Project) på Carnegie Melon University. De introducerede betingelserne frontend, midterste og bageste ende. De fleste kompilatorer har mindst to faser. Men som regel indkapsler bagenden og forenden disse faser.

Hvad er forskellen mellem fase og pass i kompilator?

Fase og Pass er to udtryk, der anvendes i compilers område. Et pass er en enkelt gang, kompilatoren passerer over (går igennem) kildekoden eller en anden repræsentation af den. Typisk har de fleste kompilatorer mindst to faser kaldet forenden og bagsiden, mens de kan være enten one-pass eller multi-pass. Fase bruges til at klassificere kompilatorer ifølge konstruktionen, mens pass bruges til at klassificere kompilatorer i overensstemmelse med hvordan de fungerer.