Linearer Scan-Registerallokator: Umgang mit Lebensdauerlücken
Dieser Beitrag beschreibt Verbesserungen am linearen Scan-Registerallokationsalgorithmus zur Behandlung von Lebensdauerlücken. Der Autor erklärt, wie diese Lücken entstehen, indem der Kontrollflussgraph auf eine lineare Anweisungsfolge reduziert wird, was zu Diskontinuitäten in den Lebensdauern virtueller Register führt. Die Lösung besteht darin, die Intervall-Datenstruktur so zu modifizieren, dass mehrere disjunkte Bereiche unterstützt werden, wodurch diese Lücken identifiziert und genutzt werden können. Der lineare Scan-Algorithmus wird dann angepasst, um diese Lücken bei der Registerzuweisung zu berücksichtigen, was die Registerauslastung verbessert. Dies verbessert die Fähigkeit des Compilers, Registerressourcen zu nutzen, und steigert letztendlich die Codeleistung.
Mehr lesen