Теория к заданиям — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «== Множества Gen и Kill == В лекциях определения этих множеств даются в рамках темы Достигающ…») |
Admin (обсуждение | вклад) |
||
Строка 21: | Строка 21: | ||
*Определение <code>d</code> <strong>достигает</strong> точки <code>p</code>, если существует путь от точки, непосредственно следующей за <code>d</code>, к точке <code>p</code>, такой, что вдоль этого пути <code>d</code> остается живым. | *Определение <code>d</code> <strong>достигает</strong> точки <code>p</code>, если существует путь от точки, непосредственно следующей за <code>d</code>, к точке <code>p</code>, такой, что вдоль этого пути <code>d</code> остается живым. | ||
− | <div style="float:right; | + | <div style="float:right;">[[File:RDexample.png | 100px]]</div> |
<strong>Пример. (Из лекций).</strong> | <strong>Пример. (Из лекций).</strong> | ||
<u>B1</u> | <u>B1</u> |
Версия 17:44, 23 марта 2018
Множества Gen и Kill
В лекциях определения этих множеств даются в рамках темы Достигающих определений (Тема №2. Построение множеств Input и Output).
- gen – множество определений, порождаемых инструкцией
- kill – множество определений, убиваемых инструкцией
Примечание от нерадивых студентов.
Попробуем сформулировать проще. Предположим в блоке Блок1
определена переменная с именем Переменная1
. Определим в качестве пары (Переменная1
, Блок1
). Тогда:
- множество
Gen
для блока - это множество всех переменных, которые объявляются в этом блоке; - множество
Kill
для блокаБлок1
определяется с помощью множестваGen
следующим образом. Для каждой переменной блокаБлок1
(в нашем случае это будет толькоПеременная1
), сопоставляя её с множествомGen
для блокаБлок1
, проверяется наличие переменной с таким же именем в множествахGen
всех других блоков программы, и, в случае, если вхождение присутствует, переменная (в нашем случаеПеременная1
) входит в множествоKill
блокаБлок1
.
Достигающие определения
Из лекций:
- Определением переменной x называется инструкция, которая
присваивает значение переменной х
.
- Использованием переменной x является инструкция, одним из
операндов которой является переменная х
.
- Каждое новое определение переменной x убивает ее предыдущее
определение.
- Определение
d
достигает точкиp
, если существует путь от точки, непосредственно следующей заd
, к точкеp
, такой, что вдоль этого путиd
остается живым.
Пример. (Из лекций). B1 i ← –, m, 1 j ← n a ← u1
B2 i ← +, i, 1 j ← -, j, 1 a
B3 a ← u2
B4 i ← u3
Начало блока B2 достигается определениями:
- (i, B1), (j, B1), (a, B1),
- (j, B2) (других определений j на пути от (j, B2) до начала блока B2 нет)
- (a, B3)
- (i, B4)
(i, B2) не достигает начала B2, так как его убивает (i, B4) (j, B2) убивает (j, B1), не позволяя ему достичь блоков B3 и B4
Примечание от нерадивых студентов. Возможно, Вам поможет статья на Wikipedia.