Kompilator

En kompilator er et dataprogram som oversetter en serie instruksjoner skrevet på et bestemt programmeringsspråk ( kildekode ) til instruksjoner på et annet språk ( objektkode ) : oversettelsesprosessen kalles kompilering mens den omvendte aktiviteten - det vil si går fra objektkode til kildekode - kalles dekompilering og gjøres ved hjelp av en dekompilator .

Hvis alle kompilatorer holdt seg nøyaktig til språkspesifikasjonen , kunne det samme programmet kompileres uendret av hver kompilator, og produsere semantisk de samme resultatene, dvs. programmer som produserer det samme resultatet når de blir utsatt for de samme inngangsdataene . I virkeligheten implementerer mange kompilatorer språket ufullstendig eller legger til proprietære utvidelser, og skaper dermed dialekter av hovedspråket. For språk som tar i bruk en standard i symboldekorasjon , kan objektkode generert av forskjellige kompilatorer kobles sammen i en enkelt kjørbar fil.

Historie

Fra og med 1950 ble flere eksperimentelle kompilatorer utviklet (inkludert Grace Hoppers A - 0 System ), men i 1957 var Fortran -teamet ved IBM , ledet av John Backus , det første som bygde en komplett kompilator mens COBOL i 1960 var et av de første språkene som ble kompilert på flere arkitekturer . [1]

Ideen om kompilering slo raskt fast og mange av kompilatorens designprinsipper ble utviklet på 1960-tallet. En kompilator er i seg selv et program skrevet på et eller annet språk, og den første av dem ble skrevet i Assembly . Den første selvkompilerte kompilatoren, i stand til å kompilere sin egen kode, ble laget for Lisp -språket av Hart og Levin ved MIT i 1962 . [2] Bruken av høynivåspråk for å skrive kompilatorer akselererte på begynnelsen av 1970-tallet da Pascal- og C -språkene ble brukt til å skrive kompilatorer for seg selv: det vil si for eksempel kompilatorer for C skrevet i sin tur i C.

Beskrivelse

Når et programmeringsspråk defineres for første gang, oppstår problemet med hvordan man lager kompilatoren. I dette tilfellet er det to mulige tilnærminger:

Operasjon

Kompilatoren tar inn et program , kildekoden, som den utfører en rekke operasjoner på for å oppnå, i fravær av feil , objektkoden. Generelt er kompilatorer i stand til å gjenkjenne noen klasser av feil som finnes i programmet, og i noen tilfeller foreslå hvordan de kan rettes opp.

Gjeldende kompilatorer deler kompileringsoperasjonen inn i to hovedtrinn, frontenden og bakenden . I frontend -stadiet oversetter kompilatoren kilden til et mellomspråk (vanligvis internt i kompilatoren); i det bakre sluttstadiet skjer genereringen av objektkoden.

Frontend stage

Dette stadiet er delt inn i flere faser:

Bakre sluttstadium

Baksluttstadiet er også delt inn i flere faser:

Oppsummeringsskjema

Strømme Aktiviteter
Kildekode Redigering
Leksikalsk analysator Leksikalsk analyse
Token
Parser Syntaktisk analyse
Syntakstre
Semantisk analysator Semantisk analyse
Abstrakt syntakstre
Mellomkodegenerator
mellomkode
Intermediate Code Optimizer
mellomkode
Målkodegenerator
målkode

Merknader

  1. ^ Verdens første COBOL-kompilatorer arkivert 20. februar 2012 på Internet Archive .
  2. ^ AIM-39 , på ai.mit.edu . Hentet 4. november 2005 (arkivert fra originalen 13. september 2006) .

Bibliografi

Relaterte elementer

Andre prosjekter

Eksterne lenker