В моей лекции о распределении регистров / алгоритме Чейтина кажется, что мы строим граф интерференции, а затем пытаемся найти k-раскраску этого графа, где k = R, если мы можем использовать регистры R в целевой архитектуре. Однако, если мы передаем значение, не будет ли это означать, что нам нужен дополнительный регистр для загрузки значений из памяти перед их использованием в инструкциях и, следовательно, мы можем использовать только значения k = R-1 для алгоритма Чейтина?
Алгоритм Чейтина для распределения регистров: сколько цветов используется с регистрами R?
comment
Что ты пробовал? Не могли бы вы добавить код?
- person MaartenDev   schedule 16.02.2020
comment
Речь идет о понимании алгоритма в целом, не связанного с каким-либо конкретным кодом. Я не хочу реализовывать алгоритм, а понимаю, как он используется в компиляторах.
- person TuBerlinStudent   schedule 16.02.2020
Ответы (1)
Вы все еще можете использовать k = R. Когда вы передаете значение, вы добавляете код разлива, который сохраняет и извлекает значение (обычно в стеке, но существуют и другие альтернативы). Это заменит исходный виртуальный регистр с высокой степенью помех с рядом новых виртуальных регистров, которые существуют только в течение короткого времени и (надеюсь) имеют более низкую степень. Теперь вы можете сделать еще одну попытку окраски, и если она все еще не удалась, вы повторяете процесс разлива, пока не добьетесь успеха.
person
Johan
schedule
18.02.2020