Model for optimerende oversætter
Beskrivelse
Projektet omhandler udvikling og implementation af dele af en optimerende compiler, og er afleveret som 2.dels opgave på DIKUI 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 ;-)