Распределение основных регистров
Распределение основных регистров выполняется одним из методов распределения регистров на линейном участке, например, методом счетчика использования на каждом интервале. Если виртуальные регистры не удается целиком отобразить на A/S регистры, то могут возникать команды перезагрузки A/S регистров с использованием промежуточных BIT регистров, однако появление команд обмена с памятью здесь уже не возникает.
Команды перезагрузки вставляются в поток именно в том месте, по временной диаграмме, где сохраняемое значение уже готово, поэтому они не должны породить дополнительных за держек. С другой стороны, они не должны ставиться слишком «далеко», чтобы освободить регистр как можно раньше.
Рассмотрим последовательность команд (9) после выполнения перестановки:
1.
5.5/
а
2.
5.52
d
3.
5. S3
S.
SI
4.
S.S6
Ъ
5.
S.S7
с
6.
S.S8
S.
S6+S.
57
7.
S.S4
е
8.
5.55
S.
S3 + S.
S4
9.
S.S9
S.
S8 + S.
55.
Предположим, что мы имеем в распоряжении 3 регистра 5 и нам необходимо сохранить 5.53 для дальнейших вычислений. В результате получим следующий код:
1. S/ а
2. S2 d
3. S/ S1*S2
4. S2 b
5. S3 с
6. S2 S2 +S3 #. T.R1 SI
7. S3 e
8. S7 S1 + S3
9. SI S1 + S2.
Команда сохранения отмечена звездочкой. К моменту ее запуска значение регистра S/ уже готово.
Метки: команды перезагрузки распределение регистров, основные регистры, регистры