HOME | ENGLISH | IMPRESSUM | KIT

Bachelorarbeit (offen): Identifikation wiederkehrender Programmstrukturen

Compiler versuchen häufig die Performance des erzeugten Programmes zu optimieren, gerade für eingebettete Systeme spielt die Codegröße aber eine wichtigere Rolle. Eine der wichtigsten Optimierung für Codegröße ist das sogenannte Outlining. Dabei werden mehrfach auftretende Programmteile identifiziert und in eine separate Funktion ausgelagert. Beispielsweise kann im folgenden C-Programm


int a;
int b;
int c;

int main(void)
{
	int min_ab;
	if (a < b) {
		min_ab = a;
	} else {
		min_ab = b;
	}

	int min_bc;
	if (b < c) {
		min_bc = b;
	} else {
		min_bc = c;
	}

	return min_ab + min_bc;
}

die Minimumsberechnung in eine eigene Funktion ausgelagert werden:


int a;
int b;
int c;

int min(int a, int b)
{
	int min;
	if (a < b) {
		min_ab = a;
	} else {
		min_ab = b;
	}
	return min;
}

int main(void)
{
	int min_ab = min(a, b);
	int min_bc = min(b, c);

	return min_ab + min_bc;
}

Im Rahmen der Bachelorarbeit soll die Outlining-Optimierung in den am Lehrstuhl entwickelten Compiler libFirm integriert werden. Dabei soll die Identifikation mehrfach auftretenden Programmteile als eigene Analyse implementiert werden, die später auch von anderen Optimierungen verwendet werden kann. Abschließend soll die Qualität der Outlining-Optimierung evaluiert werden.

Aufgabe:

  • Entwurf und Implementierung einer Analyse zur Identifikation mehrfach auftretender Programmteile
  • Implementierung der Outline-Optimierung

Voraussetzungen

  • Programmierkenntnisse in C
  • Interesse am Compilerbau und Optimierungen

Schlüsselworte

Compiler, libFirm, Optimierung 

Betreuer

Wissenschaftliche Mitarbeiter
Sebastian Buchwald
Andreas Fried