Hvad er et compilerdesign? Typer, konstruktionsværktøjer, eksempel

Hvad er en compiler?

En compiler er et computerprogram, som hjælper dig med at transformere kildekode skrevet på et højt niveau sprog til lavt niveau maskinsprog. Den oversætter koden skrevet på ét programmeringssprog til et andet sprog uden at ændre betydningen af ​​koden. Compileren gør også slutkoden effektiv, som er optimeret til eksekveringstid og hukommelsesplads.

Kompileringsprocessen omfatter grundlæggende oversættelsesmekanismer og fejldetektion. Compilerprocessen gennemgår leksikalsk, syntaks- og semantisk analyse i front-end og kodegenerering og -optimering i back-end.

compiler

Funktioner af compilere

  • Korrekthed
  • Kompileringshastighed
  • Bevar den korrekte betydning af koden
  • Målkodens hastighed
  • Genkend lovlige og ulovlige programkonstruktioner
  • God fejlrapportering/håndtering
  • Hjælp til kodefejlfinding

Typer af compiler

Følgende er de forskellige typer af compiler:

  • Single Pass-kompilatorer
  • To Pass Compilers
  • Multipass-kompilatorer

Single Pass Compiler

Single Pass Compiler
Single Pass Compiler

I single pass omdannes kildekoden til compiler direkte til maskinkode. For eksempel Pascal-sprog.

Compiler med to pas

Compiler med to pas
Compiler med to pas

Two pass Compiler er opdelt i to sektioner, dvs.

  1. Frontend: Den kortlægger juridisk kode til mellemrepræsentation (IR).
  2. Bagende: Den kortlægger IR på målmaskinen

Two pass-kompileringsmetoden forenkler også retargeting-processen. Det tillader også flere frontender.

Multipass-kompilatorer

Multipass-kompilatorer
Multipass-kompilatorer

Multipass-kompileren behandler kildekoden eller syntakstræet for et program flere gange. Det opdelte et stort program i flere små programmer og behandle dem. Det udvikler flere mellemkoder. Alle disse multipass tager outputtet fra den foregående fase som input. Så det kræver mindre hukommelse. Det er også kendt som 'Wide Compiler'.

Kompilerens opgaver

De vigtigste opgaver udført af compileren er:

  • Bryder kildeprogrammet op i stykker og pålægger dem en grammatisk struktur
  • Giver dig mulighed for at konstruere det ønskede målprogram ud fra den mellemliggende repræsentation og også oprette symboltabellen
  • Kompilerer kildekode og opdager fejl i den
  • Administrer opbevaring af alle variabler og koder.
  • Understøttelse af separat kompilering
  • Læs, analyser hele programmet og oversæt til semantisk ækvivalent
  • Oversættelse af kildekoden til objektkode afhængigt af maskinens type

Historien om compiler

Vigtigt vartegn for Compilers historie er som følger:

  • "Compiler"-ordet blev første gang brugt i begyndelsen af ​​1950'erne af Grace Murray Hopper.
  • Den første compiler blev bygget af John Backum og hans gruppe mellem 1954 og 1957 kl IBM.
  • COBOL var den første programmeringssprog som blev kompileret på flere platforme i 1960
  • Undersøgelsen af ​​scannings- og parsingsproblemerne blev forfulgt i 1960'erne og 1970'erne for at give en komplet løsning.

Trin til sprogbehandlingssystemer

Før du kender til begrebet compilere, skal du først forstå et par andre værktøjer, der fungerer med compilere.

Trin til sprogbehandlingssystemer
Trin til sprogbehandlingssystemer
  • Forprocessor: Preprocessoren betragtes som en del af compileren. Det er et værktøj, der producerer input til Compiler. Det omhandler makrobehandling, augmentation, sprogudvidelse mv.
  • Tolk: En tolk er ligesom Compiler, der oversætter højt niveau sprog til lavt niveau maskinsprog. Den største forskel mellem begge er, at fortolkeren læser og transformerer kode linje for linje. Compiler læser hele koden på én gang og opretter maskinkoden.
  • Assembler: Den oversætter assemblersprogkode til maskinforståeligt sprog. Outputresultatet af assembler er kendt som en objektfil, som er en kombination af maskininstruktioner såvel som de data, der kræves for at gemme disse instruktioner i hukommelsen.
  • Links: Linkeren hjælper dig med at linke og flette forskellige objektfiler for at skabe en eksekverbar fil. Alle disse filer kan være blevet kompileret med separate assemblers. Hovedopgaven for en linker er at søge efter kaldede moduler i et program og finde ud af den hukommelsesplacering, hvor alle moduler er gemt.
  • Loader: Indlæseren er en del af operativsystemet, som udfører opgaverne med at indlæse eksekverbare filer i hukommelsen og køre dem. Den beregner også størrelsen af ​​et program, hvilket skaber yderligere hukommelsesplads.
  • Cross-compiler: En krydskompiler i compilerdesign er en platform, som hjælper dig med at generere eksekverbar kode.
  • Kilde-til-kilde-kompiler: Kilde til kilde-kompiler er et udtryk, der bruges, når kildekoden for et programmeringssprog oversættes til kilden for et andet sprog.

Compiler konstruktionsværktøjer

Compiler-konstruktionsværktøjer blev introduceret som computer-relaterede teknologier spredt over hele verden. De er også kendt som en compiler-compilator, compiler-generator eller oversætter.

Disse værktøjer bruger et specifikt sprog eller en algoritme til at specificere og implementere kompilatorens komponent. Følgende er eksemplet med kompileringsværktøjer.

  • Scanner generatorer: Dette værktøj tager regulære udtryk som input. For eksempel LEX til Unix Operating System.
  • Syntaks-styrede oversættelsesmotorer: Disse softwareværktøjer tilbyde en mellemkode ved at bruge parsetræet. Det har et mål om at knytte en eller flere oversættelser til hver node i parsetræet.
  • Parser generatorer: En parser-generator tager en grammatik som input og genererer automatisk kildekode, som kan parse strømme af tegn ved hjælp af en grammatik.
  • Automatiske kodegeneratorer: Tager mellemkode og konverterer dem til maskinsprog.
  • Dataflow-motorer: Dette værktøj er nyttigt til kodeoptimering. Her afgives information af brugeren, og mellemkode sammenlignes for at analysere enhver relation. Det er også kendt som data-flow analyse. Det hjælper dig med at finde ud af, hvordan værdier overføres fra en del af programmet til en anden del.

Hvorfor bruge en compiler?

  • Compiler verificerer hele programmet, så der er ingen syntaks eller semantiske fejl.
  • Den eksekverbare fil er optimeret af compileren, så den udføres hurtigere.
  • Giver dig mulighed for at skabe intern struktur i hukommelsen.
  • Der er ingen grund til at køre programmet på den samme maskine, som det blev bygget.
  • Oversæt hele programmet til et andet sprog.
  • Generer filer på disk.
  • Link filerne til et eksekverbart format.
  • Tjek for syntaksfejl og datatyper.
  • Hjælper dig med at forbedre din forståelse af sprogsemantik.
  • Hjælper med at håndtere sproglige præstationsproblemer.
  • Mulighed for et ikke-trivielt programmeringsprojekt.
  • De teknikker, der bruges til at konstruere en compiler, kan også være nyttige til andre formål.

Anvendelse af kompilatorer

  • Compilerdesign hjælper med fuld implementering af programmeringssprog på højt niveau.
  • Support optimering til computer Architecture Parallelisme.
  • Design af nye hukommelseshierarkier af maskiner.
  • Udbredt til oversættelse af programmer.
  • Bruges sammen med andre softwareproduktivitetsværktøjer.

Resumé

  • En compiler er et computerprogram, som hjælper dig med at transformere kildekode skrevet på et højt niveau sprog til lavt niveau maskinsprog.
  • Korrekthed, kompileringshastighed, bevare den korrekte betydning af koden er nogle vigtige funktioner i compilerdesign.
  • Compilere er opdelt i tre dele 1) Single Pass Compilers 2) Two Pass Compilers og 3) Multipass Compilers.
  • "Compileren" var ordet, der første gang blev brugt i begyndelsen af ​​1950'erne af Grace Murray Hopper.
  • Trin til sprogbehandlingssystemet er: Preprocessor, Tolker, Assembler, Linker/Loader.
  • Vigtige kompileringsværktøjer er 1) Scannergeneratorer, 2)Syntax-3) rettet oversættelsesmotorer, 4) Parsergeneratorer, 5) Automatiske kodegeneratorer.
  • Compilerens hovedopgave er at verificere hele programmet, så der ikke er syntaks eller semantiske fejl.