6 ECTS credits
178 u studietijd
Aanbieding 2 met studiegidsnummer 4005284FNR voor alle studenten in het 2e semester met een gespecialiseerd master niveau.
Basisprincipes en -technieken die worden gebruikt in moderne compilerconstructie.
Deze cursus volgt de nanopass aanpak waarbij een compiler wordt opgebouwd als een verzameling van vele fijnmazige tussenstappen [Sankar2005].
Meer specifiek wordt een selectie behandeld van de volgende compilerstappen:
* Syntax en semantiek van assembly talen
* Runtime systems van programmeertaal implementaties
* Instructieselectie
* Registerallocatie (liveness analyse, conflictdetectie, registerallocatie-algoritme op basis van grafenkleuring met stack spilling)
* Het compileren van gestructureerde control flow naar assembly taal constructies (jumps en basic blocks)
* Abstraheren van control flow (monadisch of continuation-passing style, tail calls)
* Functieoproep en return (non-tail calls, calling conventies, call stack)
* Ondersteunen van gegevensstructuren in het geheugen (heap, memory safety)
* Compileren van dynamische typering (tagging, gestructureerde data)
* First-class computations (closure conversion, lexicale scope)
* Ondiepe taalfeatures (impliciete casts, syntactic sugar)
[Sankar2005] Dipanwita Sankar, Oscar Waddell, and R. Kent Dybvig. 2005. Educational Pearl: A Nanopass framework for compiler education. J. Funct. Program. 15, 5 (September 2005), 653–667. DOI:10.1017/S0956796805005605
Aanbevolen achtergrond:
Om deze cursus te volgen, moeten studenten vertrouwd zijn met functioneel programmeren in Scheme of Racket, d.w.z. eersteklas functies, recursie over lijsten en bomen, etc.
De cursussen "Higher-order programming" zijn voldoende.
De student zal
De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Mondeling bepaalt 50% van het eindcijfer
ZELF Praktijkopdracht bepaalt 50% van het eindcijfer
Binnen de categorie Examen Mondeling dient men volgende opdrachten af te werken:
Binnen de categorie ZELF Praktijkopdracht dient men volgende opdrachten af te werken:
PROJECT (50%) + EXAMEN (50%)
Studenten kunnen niet slagen voor het vak als ze niet deelnemen aan zowel het project als het examen.
Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in de ingenieurswetenschappen: fotonica: Standaard traject
Master in de ingenieurswetenschappen: toegepaste computerwetenschappen: Standaard traject
Master of Applied Sciences and Engineering: Applied Computer Science: Standaard traject (enkel aangeboden in het Engels)
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Artificiële Intelligentie
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Multimedia
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Software Languages and Software Engineering
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Data Management en Analytics
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (enkel aangeboden in het Engels)