Phase vs Pass in Compiler
Generelt er kompilator et computerprogram, der læser et program skrevet på et sprog, der kaldes kildesproget, og oversætter det til et andet sprog, der kaldes målsproget. Traditionelt var kildesprog et sprog på højt niveau såsom C ++, og målsprog var et lavt niveau sprog som forsamlingssprog. Så generelt kan kompilatorer ses som oversættere, der oversætter fra et sprog til et andet. Bestået og fase er to udtryk, der ofte bruges med kompilatorer. Antal passerer af en compiler er det antal gange, det går over kilden (eller en eller anden form for repræsentation af den). En kompilator er opdelt i dele for at lette konstruktionen. Fase bruges ofte til at kalde sådan en enkelt uafhængig del af en compiler.
Hvad er et pas i en kompilator?
En standard måde at klassificere kompilatorer på er antallet af "gennemløb". Normalt er kompilering en relativt ressourceintensiv proces, og oprindeligt havde computere ikke nok hukommelse til at holde et sådant program, der udførte det komplette job. På grund af denne begrænsning af hardwareressourcer i tidlige computere blev compilers opdelt i mindre underprogrammer, der udførte sit delvise arbejde ved at gå over kildekoden (lavede et "pass" over kilden eller en anden form for det) og udførte analyse, transformationer og oversættelsesopgaver hver for sig. Afhængigt af denne klassificering identificeres kompilatorer således som enpasserings- eller multipass-kompilatorer.
Som navnet antyder, kompileres en-pass kompilatorer i et enkelt pass. Det er lettere at skrive en one-pass compiler, og de fungerer også hurtigere end multi-pass compilers. Derfor, selv på det tidspunkt, hvor du havde ressourcebegrænsninger, blev sprog designet, så de kunne kompileres i en enkelt passage (f.eks. Pascal). På den anden side består en typisk multipass-kompilator af flere hovedfaser. Den første fase er scanneren (også kendt som den leksikale analysator). Scanneren læser programmet og konverterer det til en række tokens. Den anden fase er parseren. Det konverterer strengen af tokens til et parse-træ (eller et abstrakt syntaks-træ), der fanger programmets syntaktiske struktur. Næste trin er den, der fortolker semantikken i den syntaktiske struktur. Koden til optimering af kode og det sidste trin til generering af kode følger dette.
Hvad er en fase i en kompilator?
Begrebsfasen kommer ofte op, når du taler om kompilerkonstruktion. Oprindeligt var kompilatorer alle enkle stykker enkelt, monolitisk software skrevet af en person til kompilering af et simpelt sprog. Men når kildekoden til det sprog, der skal oversættes, bliver kompleks og stor, blev compileren opdelt i flere (relativt uafhængige) faser. Fordelen ved at have forskellige faser er, at udviklingen af compileren kan fordeles mellem et team af udviklere. Desuden forbedrer det modulariteten og genbrug ved at lade faser udskiftes med forbedrede eller yderligere faser (såsom yderligere optimeringer), der føjes til compileren. Processen med at opdele kompilering i faser blev introduceret af PQCC (Production Quality Compiler-Compiler Project) ved Carnegie Melon University. De introducerede udtrykkene front-, midter- og bagende. De fleste kompilatorer har mindst to faser. Men normalt indkapsler bagenden og frontenden disse faser.
Hvad er forskellen mellem Phase og Pass in Compiler?
Phase and Pass er to udtryk, der bruges inden for compilers. Et pas er en enkelt gang, som kompilatoren overfører (gennemgår) kildekoden eller en anden repræsentation af den. Typisk har de fleste kompilatorer mindst to faser kaldet front-end og back-end, mens de kan være enten en-pass eller multi-pass. Fase bruges til at klassificere kompilatorer efter konstruktionen, mens pass bruges til at klassificere compilers efter, hvordan de fungerer.