De hovedforskjell mellom single pass og multipass compiler er det en enkelt passkompilator er en kompilator som bare sender kildekoden gjennom hver kompileringsenhet en gang mens en multipass-kompilator skiller kompilering i flere pass, hvor hvert pass vil fortsette med resultatet av det forrige passet.
Et dataprogram er et sett med instruksjoner for at datamaskinen skal utføre en bestemt oppgave. Vanligvis programmerer programmerere programmer ved hjelp av programmeringsspråk på høyt nivå. Datamaskinen forstår imidlertid ikke disse instruksjonene. Derfor er det nødvendig å konvertere kildekoden til en maskinforståelig maskinkode. En kompilator er en programvare som konverterer kildekode til maskinkode, og single pass og multipass compiler er to typer kompilatorer.
1. Hva er en enkeltpass kompiler
- Definisjon, funksjonalitet
2. Hva er en Multipass Compiler
- Definisjon, funksjonalitet
3. Hva er forskjellen mellom single pass og multipass compiler
- Sammenligning av nøkkelforskjeller
Single Pass kompilator, Multipass kompiler
Det er en rekke stadier i samlingsprosessen. En enkelt pass kompilator gjør et enkelt pass gjennom kildeteksten, analysere, og generere kode bare én gang. Med andre ord tillater det at kildekoden bare skal passere gjennom hver samlingsenhet én gang. Det oversetter umiddelbart hver kodeseksjon til sin endelige maskinkode.
Figur 1: Kompilator
Hovedfaser av singlepass-kompilatoren er leksikalanalyse, syntaktisk analyse og kodegenerator. Først skanner den leksikalske analysen kildekoden og deler den i tokens. Hvert programmeringsspråk har en grammatikk. Det representerer språkens syntaks og juridiske setninger. Deretter bestemmer den syntaktiske analysen språkkonstruksjonene som beskrives av grammatikken. Endelig genererer kodegeneratoren målkoden. Samlet sett optimaliserer ikke single pass-kompilatoren koden. Videre er det ingen mellomliggende kodegenerering.
En multipass-kompilator gjør at kildekoden går gjennom å analysere, analysere, generere, etc. flere ganger mens du genererer mellomkoden etter hvert trinn. Den konverterer programmet til en eller flere mellomliggende representasjoner i trinn mellom kildekoden og maskinkoden. Den reprosesserer hele kompileringsenheten i hvert sekvensielt pass.
Hvert pass tar resultatet av forrige pass som inngang og skaper en mellomliggende utgang. På samme måte, i hvert pass, forbedres koden til det endelige passet genererer den endelige koden. En multipass-kompilator utfører flere oppgaver som mellomkodgenerering, maskinavhengig kodeoptimalisering og maskinavhengig kodeoptimalisering.
Figur 2: Multipass-kompiler
Det er flere fordeler for multipass-kompilatorer. De er maskinavhengige og inkluderer en modulær struktur. Kodegenerasjonen avbrytes fra de andre trinnene i kompilering. Passene kan derfor gjenbrukes for forskjellige maskiner eller maskinvare. Videre representerer det mer komplekse og uttrykksfulle språk.
En enkeltpaskompilator er en type kompilator som bare passerer gjennom delene av hver kompileringsenhet, umiddelbart oversette hver kodeseksjon til sin endelige maskinkode. En multipass-kompilator er en type kompilator som behandler kildekoden eller et abstrakt syntaks-tre av et program flere ganger. Derfor forklarer disse definisjonene hovedforskjellen mellom single pass og multipass compiler.
Hastighet er en stor forskjell mellom single pass og multipass compiler. En multipass-kompilator er tregere enn enkeltpass-kompilatoren fordi hver passering leser og skriver en mellomfil.
En enkelt pass kompilator kalles også en smal kompilator mens en multipass kompilator kalles en bred kompilator.
Videre har en enkelt pass kompilator et begrenset omfang, mens en multipass kompilator har et større omfang.
En annen forskjell mellom single pass og multipass compiler er at det ikke er noen kode optimalisering i single pass kompiler, i motsetning til multipass compiler, som har kode optimalisering.
Intermediate koder gjør også en forskjell mellom single pass og multipass compiler. Det finnes ingen mellomliggende kodegenerering i single pass-kompilatorer. Det er imidlertid en mellomliggende kodegenerering i multipass-kompilatorer.
Videre tar en enkeltkompilator en minimumstid for å kompilere sammenlignet med en multipass-kompilator.
Dessuten er minnekonsumet i en multipass-kompilator høyere enn for en enkelt passerkompiler. Dermed er dette en annen forskjell mellom single pass og multipass compiler.
Programmeringsspråk som Pascal kan implementeres ved hjelp av en enkelt pass kompilator mens programmeringsspråk som Java kan implementeres ved hjelp av en multipass kompilator. Derfor er dette enda en forskjell mellom single pass og multipass compiler.
Enkeltpass og multipass-kompilator er to typer kompilatorer. Forskjellen mellom single pass og multipass compiler er at en enkelt pass kompilator er en kompilator som overfører kildekoden gjennom hver kompileringsenhet bare en gang mens en multipass-kompilator skiller kompilering i flere pass, hvor hvert pass vil fortsette med resultatet av forrige pass.
1. "pass1 og 2 kompilator." Scribd, Scribd, tilgjengelig her.
2. "One-Pass Compiler." Wikipedia, Wikimedia Foundation, 23. mars 2018, Tilgjengelig her.
3. "Multi-Pass Compiler." Wikipedia, Wikimedia Foundation, 8. februar 2018, Tilgjengelig her.
1. "Compiler" Av I, Surachit (CC BY-SA 3.0) via Commons Wikimedia
2. "Multi-passcompiler" Av Kenstruys - Eget arbeid (Public Domain) via Commons Wikimedia