Forklaring en de 4 faser i en compiler

Tags:    compiler programmering

Hej :)

Jeg er i gang med at lære om, hvad en compiler er, og hvordan den virker. Jeg har set på Youtube og læst mig frem til følgende:
En compiler oversætter fra et programmingssprog til maskine sprog/code. Det sker igennem 4 faser, nemlig; Scanner, Parser, Analysis & Backend, hvor Scanner/Parser, som er frontend, laver IR for programmet. Analysis transformerer koden, og arbejder på IR. Backend transformerer IR til code som modtageren forstår (maskine kode).

Det jeg har brug for hjælp med er at beskrive for mig, hvad hver fase gør på en bedre en måde end min, og hvordan de implementeres (beskrevet). Derudover forstår jeg ikke helt hvad IR (Intermediate Representation) er, og hvad formålet med det er.

Jeg takker for jeres hjælp :)


EDIT:

Jeg kom til at skrive "en" i stedet for "af" i emnet :)




Indlæg senest redigeret d. 25.05.2016 23:40 af Bruger #21403
2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
IR simplificerer verden. Forestil dig, at du laver et nyt sprog (lad os kalde det Pimp).
Du vil så have gcc (Gnu Compiler Collection) til at understøtte det. Det eneste du skal gøre er at lave en frontend, som ganske rigtigt består af en scanner og parser samt det løse. Den omdanner din Pimp kode til gcc IR (som vistnok hedder Gimple). That's it!

Nu hvor din kode er omdannet til IR får du al den lir, som gcc består af. Først en masse optimeringer, hvor døde code paths bliver fjernet, loops kan rulles ud, tail recursion kan omskrives, aritmetik kan simplificeres, beregninger i loops kan flyttes ud, osv.
Resultatet af dette skridt bliver så sendt til en backend, som omdanner IR til Intel 64 bit maskinkode, eller 32 bit, eller Arm, eller MIPS, eller...osv.

Du kommer med andre ord til at understøtte alle de arkitekturer, som gcc understøtter alene ved at lave en frontend til gcc.

Makes sense?



Indlæg senest redigeret d. 29.05.2016 21:01 af Bruger #2695
t