Beskrivelse

Projektet omhandler udvikling og implementation af dele af en optimerende compiler, og er afleveret som 2.dels opgave på DIKU
I sin enkelthed, er det et forsøg på, at lave et eksperimentarium for optimeringsstrategier, så der kan kan eksperimenteres med optimering af kode på mellemkodeniveau. I projektet er control flow og data flow analyser allerede implementeret, sammen med en fornuftig (synes jeg ;)) struktur til at holde selve mellemkoden. Der er udviklet en objektmodel, som giver mulighed for, at udvikle og indsætte sine egne optimeringsmoduler i den "optimerings pipeline", som projektet implementerer.

Som eksempel, vises hvordan en registerallokator, der benytter graffarvning, kan indsættes i modellen. Registerallokatoren navngiver live-ranges unikt, men laver hverken coalescing eller spill-kode. Hvis der ikke er nok tilgængelige registrer, opgiver optimizeren.

Udviklingen er foretaget i Visual C++, og den bruger Microsofts implementation af STL, så desværre er koden ikke helt portabel. Til projektet, er Bumble-Bee Softwares Lex & Yacc brugt. Den er gratis for studerende.
Hent koden hvis det har din interesse. Koden er i .zip format. Koden, eller dele deraf, må gerne indgå i et andet ikke-kommercielt projekt men kun med kildeangivelse. Hvis brugen af koden er direkte eller indirekte er skyld i ulykker af hvilken som helst art, er det som sædvanlig ikke min skyld ;-)