De huvudskillnad mellan enkelpass och multipass compiler är det en enkelsiffror är en kompilator som endast skickar källkoden via varje kompileringsenhet en gång medan en multipass-kompilator separerar kompilering i flera pass, där varje passning skulle fortsätta med resultatet av det föregående passet.
Ett datorprogram är en uppsättning instruktioner för att datorn ska kunna utföra en viss uppgift. Vanligtvis programmerar programmerare program som använder högtalande programmeringsspråk. Däremot förstår inte datorn dessa instruktioner. Därför är det nödvändigt att konvertera källkoden till en maskinförståelig maskinkod. En kompilator är en programvara som omvandlar källkod till maskinkod, och enkelpass och multipass compiler är två typer av kompilatorer.
1. Vad är en enkelsidig kompilator
- Definition, Funktionalitet
2. Vad är en Multipass Compiler
- Definition, Funktionalitet
3. Vad är skillnaden mellan enstaka och multipass-kompilatorn
- Jämförelse av viktiga skillnader
Single Pass kompilator, Multipass kompilator
Det finns ett antal steg i sammanställningen. En enkelpassompilator gör ett enda pass genom källtexten, analyserar och genererar kod endast en gång. Med andra ord tillåter källkoden att passera genom varje samlingsenhet enbart en gång. Det översätter omedelbart varje kodavsnitt till sin slutliga maskinkod.
Figur 1: Kompilator
Huvudstadierna av enkelpassompilatorn är lexisk analys, syntaktisk analys och kodgenerator. Först undersöker den lexiska analysen källkoden och delar den i token. Varje programmeringsspråk har en grammatik. Det representerar språkets syntax och juridiska uttalanden. Därefter bestämmer den syntaktiska analysen de språkkonstruktioner som beskrivs av grammatiken. Slutligen alstrar kodgeneratorn målkoden. Sammanfattningsvis optimerar inte enkelpassompilatorn koden. Dessutom finns det ingen mellanliggande kodgenerering.
En multipass-kompilator gör källkoden genom att parsa, analysera, generera etc. flera gånger samtidigt som man genererar mellankod efter varje steg. Den omvandlar programmet till en eller flera mellanrepresentationer i steg mellan källkod och maskinkod. Den upparbeider hela kompileringsenheten i varje sekventiellt pass.
Varje pass tar resultatet av det föregående passet som ingång och skapar en mellanproduktion. På samma sätt förbättras koden i varje pass till det sista passet genererar slutkoden. En multipass-kompilator utför ytterligare uppgifter som mellan kodkodsgenerering, maskinberoende kodoptimering och maskinoberoende kodoptimering.
Figur 2: Multipass-kompilator
Det finns flera fördelar med multipass-kompilatorer. De är maskinoberoende och innehåller en modulär struktur. Kodgenereringen avvecklas från de andra stegen i sammanställningen. Passagerna kan därför återanvändas för olika maskiner eller hårdvaror. Dessutom representerar det mer komplexa och uttrycksfulla språk.
En enkelpassompilator är en typ av kompilator som bara passerar delarna av varje kompileringsenhet en gång och omedelbart översätter varje kodavsnitt till sin slutliga maskinkod. En multipass-kompilator är en typ av kompilator som behandlar källkoden eller abstrakta syntaxträdet i ett program flera gånger. Följaktligen förklarar dessa definitioner den huvudsakliga skillnaden mellan enkel-och multipass-kompilatorn.
Hastighet är en stor skillnad mellan single-pass och multipass compiler. En multipass-kompilator är långsammare än enkelpassompilatorn eftersom varje passerar läser och skriver en mellanfil.
En enkelpassompilator kallas också en smal kompilator medan en multipass-kompilator kallas en bred kompilator.
Dessutom har en enkelkompilator en begränsad räckvidd medan en multipass-kompilator har ett större räckvidd.
En annan skillnad mellan single-pass och multipass-kompilatorn är att det inte finns någon kodoptimering i enkelpassompilatorn, till skillnad från i multipassompilatorn, som har kodoptimering.
Intermediate-koder gör också en skillnad mellan enstaka och multipass-kompilatorn. Det finns ingen mellanliggande kodgenerering i enkelsidiga kompilatorer. Det finns dock en mellanliggande kodgenerering i multipass-kompilatorer.
Vidare tar en enskild passarkompilator en minimal tid att kompilera jämfört med en multipass-kompilator.
Minneskonsumtionen i en multipass-kompilator är också högre än den för en enstaka kompilator. Således är detta en annan skillnad mellan enstaka och multipass-kompilatorn.
Programmeringsspråk som Pascal kan implementeras med hjälp av en enstaka kompilator medan programmeringsspråk som Java kan implementeras med hjälp av en multipass-kompilator. Därför är detta ännu en skillnad mellan enstaka och multipass-kompilatorn.
Singelpass och multipass-kompilatorn är två typer av kompilatorer. Skillnaden mellan single-pass och multipass-kompilatorn är att en enda passarkompilator är en kompilator som skickar källkoden genom varje kompileringsenhet en gång medan en multipass-kompilator separerar kompilering i flera passeringar, där varje passning skulle fortsätta med resultatet av det föregående passet.
1. "pass1 och 2 kompilator." Scribd, Scribd, Tillgänglig här.
2. "One-Pass Compiler." Wikipedia, Wikimedia Foundation, 23 mars 2018, Tillgänglig här.
3. "Multi-Pass Compiler." Wikipedia, Wikimedia Foundation, 8 februari 2018, Tillgänglig här.
1. "Compiler" Av I, Surachit (CC BY-SA 3.0) via Commons Wikimedia
2. "Multi-passcompiler" Av Kenstruys - Egent arbete (Public Domain) via Commons Wikimedia