Распределение основных регистров

Распределение основных регистров выполняется одним из методов распределения регистров на линейном участке, например, методом счетчика использования на каждом интервале. Если виртуальные регистры не удается целиком отобразить на 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/ уже готово.

Метки: , ,

Связанные записи