www.all2know.com Google WWW All2know sv
  Huvudsida Huvudsida | Om Om 
  Navigation
» Huvudsida
» Artikelkategorier
» Innehålls listor
» Alfabetiskt index
» Slumpmässig sida
» Redigera Extern länk
Ändrad: 2007-08-10
  Länkar hit 
Dator
Datavetenskap
C (programspråk)
Z88DK
GCC
BSD
Nummertecken
Programmering
Kompilering
Java (programspråk)
JIT-kompilator
Maskinkod
Emulator
UML
Brainfuck
HiSpeed Pascal
Personal Pascal
Assembler
VHDL
Verilog
Dotnet
Linux
Interpretator
Exekvering
Java Server Pages
Norsk Data
KDevelop
Haskell
AMD64
AMOS (programspråk)
Länklista » SMIL (dator)
Turingpriset
Länklista » Länklista » Intel 8080
Statisk testning
Mono (utvecklingsplattform)
NesC
Skräpsamling
  Andra språk 
daCompiler
fiOhjelmointikielen kääntäjä
frCompilateur
noKompilator
Kategori: Datavetenskap Kompilatorer Datorprogram för programutveckling

Kompilator

En kompilator är ett datorprogram som översätter ett datorprogram från ett programspråk till ett annat, till exempel från C till maskinkod. Denna process sker vanligen som ett antal separata faser eller steg. Normalt delas dessa in i två huvudkomponenter, en front-end och en back-end. Frontenden har som uppgift att tolka det programspråk som kompileras, och översätta den till en abstrakt syntax. Denna abstraka syntax används sedan som indata till backenden för att generera den slutliga översättningen.

1 Front end
2 Back end
3 Se även

Front end

Frontenden består normalt av tre steg: lexikalanalys, syntaxanalys samt semantisk analys.
  • Lexikalanalysen tar bort kommentarer och delar upp programmet i tokens, det vill säga betydelsebärende enheter, till exempel IF, WHEN, tilldelning, addition och sÃ¥ vidare. De kan ses som ord och skiljetecken i programsprÃ¥ket.
  • Syntaxanalysen sätter samman orden frÃ¥n lexikalanalysen till korrekta meningar, satser och uttryck i programsprÃ¥ket. Detta görs ifrÃ¥n en uppsätning grammatiska regler för hur orden fÃ¥r kombineras.
  • Den semantiska analysen syftar till att kontrollera att de instruktioner som satserna bildar fÃ¥r utföras. Det viktigaste steget är typkontroll och uppmärkning av syntaxträdet. DÃ¥ kontrolleras att alla uttryck är av rätt typ. Till exempel förhindras att tvÃ¥ strängar kan divideras med varandra, eller att funktioner anropas med fel antal parametrar. När typen av ett uttryck är fastställd märks syntaxträdet upp med korrekt typinformation, sÃ¥ att kompilatorn senare ska veta om till exempel en addition är mellan heltal eller reella tal. Ju mer avancerad den semantiska analysen görs desto mindre blir risken att fel som fÃ¥r program att krascha kan kompileras.

Back end

Backenden får ett uppmärkt syntaxträd från frontenden, och genomför transformationer på detta för att komma till målspråket.
  • Optimeringssteg kan förekomma flera gÃ¥nger pÃ¥ olika nivÃ¥er i översättningen. Bland annat kan konstanta uttryck räknas ut, och kod som aldrig kommer nÃ¥s tas bort frÃ¥n programmet.
  • Översättningen görs ofta först till ett internt mellansprÃ¥k som är ett förenklat generellt lÃ¥gnivÃ¥sprÃ¥k för en godtycklig processorarkitektur.
  • Därefter genomförs registerallokeringallokering. DÃ¥ fördelas processorns interna lagringsutrymme till variabler sÃ¥ att operationer gÃ¥r att genomföra.
  • Det sista steget är kodgenerering där kompilatorn väljer instruktioner i mÃ¥lsprÃ¥ket som kan ersätta instruktionerna i källsprÃ¥ket, eller det interna mellansprÃ¥ket. Om mÃ¥lsprÃ¥ket är för CISC-processor krävs här en stor insats av kompilatorn för att välja sÃ¥ bra instruktioner som möjligt, dÃ¥ det finns instruktioner som kan ersätta ett flertal instruktioner i käll- eller mellansprÃ¥ket. Kodgenerering till RISC-arkitektur är enklare dÃ¥ urvalet av instruktioner är mindre.

Fördelen med att bygga upp en kompilator så här att det blir väldigt enkelt att till exempel byta målspråk. Allt man behöver göra är att byta ut den sista delen. För att lägga till ett nytt källspråk behövs bara en till front-end.

Ett program kompilerat till maskinkod behöver länkas till systemrutiner för att göras till ett körbart program.

Se även

Från Wikipedia, den fria encyklopedin. Extern länk. Denna sida är publicerad under GNU Free Documentation License Extern länk.