Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Kompilator - Wikipedia, den fria encyklopedin

Kompilator

Wikipedia

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.

[redigera] 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.

[redigera] 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 registerallokering. 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.

[redigera] Se även

Den här artikeln är hämtad från http://sv.wikipedia.org../../../k/o/m/Kompilator.html
Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com