Pok-13-wyk-Slajd15
Generacja kodu – przydział rejestrów
Jak już wspomniano wcześniej – dobry algorytm przydzielania rejestrów ma fundamentalne znaczenie dla efektywności wygenerowanego kodu wynikowego. Operacje na rejestrach są efektywniejsze niż wykonywane na pamięci operacyjnej – mają krótsze kody i zazwyczaj są szybsze.
Problem optymalnego przydziału rejestrów ma złożoność wykładniczą, zmuszeni więc jesteśmy – ze względu na czas działania generatora kodu – poszukiwać efektywnych algorytmów heurystycznych.
Problem polega na tym, że rejestrów jest relatywnie mało – do 32 w nowoczesnych procesorach. Liczba ta nie wystarcza, aby przechowywać wszystkie często używane wartości, zwłaszcza jeżeli konieczne jest obliczanie skomplikowanych wyrażeń. Dodatkowe utrudnienia wynikają z tego, że niektóre operacje można wykonać tylko w określonych rejestrach, a także koszt wykonania tych samych operacji z użyciem różnych rejestrów może być różny.