Skillnad mellan fas och pass i kompilator

Anonim

Fas vs Pass i kompilator

Generellt är kompilatorn ett dataprogram som läser en 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åk ett språk på hög nivå som C ++ och målspråket var ett lågnivå språk som Assembly Language. Så i allmänhet kan kompilatorer ses som översättare som översätter från ett språk till ett annat. Pass och fas är två termer som ofta används med kompilatorer. Antal kompisators pass är antalet gånger det går över källan (eller någon form av representation av det). En kompilator är uppdelad i delar för att underlätta konstruktionen. Fas används ofta för att ringa en sådan oberoende del av en kompilator.

Vad är ett pass i en kompilator?

Ett standard sätt att klassificera kompilatorer är med antalet "pass". Vanligtvis är kompilering en relativt resursintensiv process och i början hade datorer inte tillräckligt med minne för att hålla ett sådant program som gjorde det fullständiga jobbet. På grund av denna begränsning av hårdvara resurser i tidiga datorer, delades kompilatörer i till mindre delprogram som gjorde sitt partiella jobb genom att gå över källkoden (gjorde ett "pass" över källan eller någon annan form av det) och utförde analys, omvandlingar och översättningsuppgifter separat. Så, beroende på denna klassificering, är samlarna indentified som en-pass eller multi-pass kompilatorer.

Som namnet antyder sammanställer en-pass kompilatorn i ett enda pass. Det är lättare att skriva en en-pass kompilator och även de utför snabbare än multi-pass kompilatorer. Därför, även när du hade resursbegränsningar, utformades språk så att de kunde sammanställas i ett en-pass (t.ex. Pascal). Å andra sidan består en typisk multi-pass kompilator av flera huvudstadier. Det första steget är skannern (även känd som den lexiska analysatorn). Skannern läser programmet och konverterar det till en sträng tokens. Det andra steget är parsern. Den omvandlar strängen av tokens till ett parse-träd (eller ett abstrakt syntaktträd), som fångar programmets syntaktiska struktur. Nästa steg är det som tolkar semantiken för den syntaktiska strukturen. Kodoptimeringstegen och det slutliga kodgenereringssteget följer detta.

Vad är en fas i en kompilator?

Termen fas kommer ofta upp när du pratar om kompilatorkonstruktion. Ursprungligen var kompilatorer alla enkla bitar av singelmonolitisk programvara som skrevs av en person för sammanställning av ett enkelt språk. Men när källkoden för språket som ska översättas blir komplicerat och stort, kompilerades det 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ättras modulariteten och återanvändningen genom att låta faserna ersättas av förbättrade eller ytterligare faser (till exempel ytterligare optimeringar) som ska läggas till kompilatorn. Processen att dela samman samlingen till faser introducerades av PQCC (Production Quality Compiler-Compiler Project) vid Carnegie Melon University. De introducerade villkoren främre änden, mitten och bakänden. De flesta kompilatorer har minst två faser. Men vanligtvis inkapslar baksidan och framsidan dessa faser.

Vad är skillnaden mellan fas och pass i kompilatorn?

Fas och pass är två termer som används i kompilatorns område. Ett pass är en enda gång kompilatorn passerar över (går igenom) källkoden eller någon annan representation av den. Vanligtvis har de flesta kompilatorer åtminstone två faser som kallas frontänd och bakre ände, medan de kan vara antingen one-pass eller multi-pass. Fas används för att klassificera kompilatorer enligt konstruktionen, medan pass används för att klassificera kompilatorer enligt hur de fungerar.