Fase vs Pass in Compiler
Generelt er compiler 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ålsproget var et lavt sprog som forsamlingssprog. Så generelt kan kompilatorer ses som oversættere, der oversætter fra et sprog til et andet. Godkendelse og fase er to udtryk, der ofte bruges med compilere. Antal passerer af en kompilator er antallet af gange, den går over kilden (eller en eller anden form for repræsentation af den). En compiler er opdelt i dele for at lette konstruktionen. Fase bruges ofte til at kalde en sådan uafhængig del af en compiler.
Hvad er et pas i en kompilator?
En standard måde at klassificere compilere er ved antallet af "pass". Normalt er kompilering en relativt ressourceintensiv proces, og oprindeligt havde computere ikke nok hukommelse til at have et sådant program, der gjorde det komplette job. På grund af denne begrænsning af hardware-ressourcer i tidlige computere blev compilere opdelt i mindre underprogrammer, der gjorde sit delvise job ved at gå over kildekoden (lavet et "pass" over kilden eller en anden form for det) og udført analyse , transformationer og oversættelsesopgaver separat. Afhængig af denne klassificering identificeres kompilatorer således som en-pas eller multi-pass kompilatorer.
Som navnet antyder, samles en-pas kompilatorer i et enkelt pass. Det er lettere at skrive en en-pas kompilator, og de fungerer også hurtigere end multi-pass kompilatorer. Selv på det tidspunkt, hvor du havde ressourcebegrænsninger, var sprog derfor designet, så de kunne samles i en enkeltgang (f.eks. Pascal). På den anden side består en typisk multi-pass compiler af flere hovedstadier. Den første fase er scanneren (også kendt som den leksikale analysator). Scanner læser programmet og konverterer det til en streng tokens. Den anden fase er parseren. Det konverterer strengen med symboler til et parse-træ (eller et abstrakt syntaks-træ), der fanger programmets syntaktiske struktur. Næste trin er det, der fortolker den syntaktiske strukturs semantik. Kodeoptimeringsstadierne og den sidste kodegenereringsfase følger dette.
Hvad er en fase i en kompilator?
Begrebet fase kommer ofte op, når man taler om kompileringskonstruktion. Oprindeligt var compilere alle enkle stykker af enkelt, monolitisk software skrevet af en person til udarbejdelse af et enkelt sprog. Men når kildekoden for det sprog, der skal oversættes, bliver kompleks og stor, 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. Derudover forbedrer det modulariteten og genanvendes ved at lade faser udskiftes med forbedrede faser eller yderligere faser (såsom yderligere optimeringer), der føjes til kompilatoren. Processen med at opdele kompilationen til faser blev introduceret af PQCC (Production Quality Compiler-Compiler Project) ved Carnegie Melon University. De introducerede udtrykkene frontende, mellemenden og bagenden. De fleste kompilatorer har mindst to faser. Men normalt indkapsler disse faser bagenden og frontenderne.
Hvad er forskellen mellem fase og pas i kompilator?
Fase og pas er to udtryk, der bruges inden for området kompilatorer. Et pass er en enkelt gang, at kompilatoren passerer (går igennem) kildekoden eller en anden repræsentation af den. De fleste kompilatorer har typisk mindst to faser, der kaldes forenden og bagenden, mens de enten kan være en-pas eller multi-pass. Fase bruges til at klassificere kompilatorer i henhold til konstruktionen, mens pass bruges til at klassificere kompilatorer i henhold til hvordan de fungerer.