Skillnaden Mellan Fas Och Godkännande I Kompilator

Skillnaden Mellan Fas Och Godkännande I Kompilator
Skillnaden Mellan Fas Och Godkännande I Kompilator

Video: Skillnaden Mellan Fas Och Godkännande I Kompilator

Video: Skillnaden Mellan Fas Och Godkännande I Kompilator
Video: Visning av vad som är fas och nolla i eluttaget! 2024, April
Anonim

Phase vs Pass in Compiler

I allmänhet är kompilator ett datorprogram som läser ett program skrivet på ett språk, som kallas källspråket, och översätter det till ett annat språk, som kallas målspråket. Traditionellt var källspråket ett högnivåspråk som C ++ och målspråket var ett lågnivåspråk som monteringsspråk. Så i allmänhet kan kompilatorer ses som översättare som översätter från ett språk till ett annat. Pass och Phase är två termer som ofta används med kompilatorer. Antalet passerar av en kompilator är det antal gånger den går över källan (eller någon form av representation av den). En kompilator delas upp i delar för att underlätta konstruktionen. Fas används ofta för att anropa en sådan oberoende del av en kompilator.

Vad är ett pass i en kompilator?

Ett vanligt sätt att klassificera kompilatorer är med antalet "pass". Vanligtvis är kompilering en relativt resurskrävande process och initialt hade datorer inte tillräckligt med minne för att hålla ett sådant program som gjorde hela jobbet. På grund av denna begränsning av hårdvaruresurser i tidiga datorer delades kompilatorer in i mindre underprogram som gjorde sitt partiella jobb genom att gå igenom källkoden (gjorde ett "pass" över källan eller någon annan form av det) och utförde analyser, transformationer och översättningsuppgifter separat. Så, beroende på denna klassificering, identifieras kompilatorer som kompasskomponenter med en eller flera passager.

Som namnet antyder samlar kompilatorer med ett pass i ett enda pass. Det är lättare att skriva en kompilator med en passning och de fungerar också snabbare än kompilatorer med flera pass. Därför, även vid den tidpunkt då du hade resursbegränsningar, utformades språk så att de kunde sammanställas i en enda passage (t.ex. Pascal). Å andra sidan består en typisk multi-pass kompilator av flera huvudsteg. Det första steget är skannern (även känd som lexikalisk analysator). Scanner läser programmet och konverterar det till en rad tokens. Det andra steget är analysatorn. Den omvandlar strängen av tokens till ett parse-träd (eller ett abstrakt syntaxträd), som fångar programmets syntaktiska struktur. Nästa steg är det som tolkar semantiken i den syntaktiska strukturen. Kodoptimeringsstegen och slutkodgenereringssteget följer detta.

Vad är en fas i en kompilator?

Termen fas kommer ofta upp när du pratar om kompilator konstruktion. Ursprungligen var kompilatorer alla enkla delar av enstaka, monolitisk programvara skriven av en person för sammanställning av ett enkelt språk. Men när källkoden för det språk som ska översättas blir komplex och stor, delades kompilatorn in i flera (relativt oberoende) faser. Fördelen med att ha olika faser är att utvecklingen av kompilatorn kan fördelas mellan ett team av utvecklare. Dessutom förbättrar det modulariteten och återanvändningen genom att låta faser ersättas med förbättrade eller ytterligare faser (såsom ytterligare optimeringar) som ska läggas till kompilatorn. Processen med att dela samman sammanställningen i faser introducerades av PQCC (Production Quality Compiler-Compiler Project) vid Carnegie Melon University. De introducerade termerna front end, middle end och back end. De flesta kompilatorer har minst två faser. Men vanligtvis inkapslar backend och frontend dessa faser.

Vad är skillnaden mellan Phase och Pass in Compiler?

Phase and Pass är två termer som används inom området kompilatorer. Ett pass är en gång kompilatorn passerar (går igenom) källkoden eller någon annan representation av den. Vanligtvis har de flesta kompilatorer minst två faser som kallas front-end och back-end, medan de kan vara antingen en-pass eller multi-pass. Fas används för att klassificera kompilatorer enligt konstruktionen, medan pass används för att klassificera kompilatorer efter hur de fungerar.

Rekommenderas: