Редактирование: Функция ssa
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | Функция <strong>ssa(Fn)</strong> - функция, реализованная в [[Си | + | Функция <strong>ssa(Fn)</strong> - функция, реализованная в [[Си интерфейс | Си интерфейсе]] [[QBE]]. Располагается в файле <code>cfg.c</code> и "подключается" в <code>[[ all.h | all.h]]</code>. |
== Назначение == | == Назначение == | ||
− | <strong> | + | <strong>fillpreds</strong> осуществляет построение [https://ru.wikipedia.org/wiki/SSA | SSA-формы]. |
#Заполняет dominance frontier (границы доминирования), кладет в <code>blk->fron</code> (размер множества - в <code>blk->nfron</code>); | #Заполняет dominance frontier (границы доминирования), кладет в <code>blk->fron</code> (размер множества - в <code>blk->nfron</code>); | ||
#Заполняет живые переменные; | #Заполняет живые переменные; | ||
− | #Строит [https://ru.wikipedia.org/wiki/SSA SSA-форму], меняя fn. | + | #Строит [https://ru.wikipedia.org/wiki/SSA | SSA-форму], меняя fn. |
== Исходный код == | == Исходный код == | ||
Функция <strong>ssa</strong> из <code>ssa.c</code> | Функция <strong>ssa</strong> из <code>ssa.c</code> | ||
− | + | /* require rpo and ndef */ | |
− | + | void ssa(Fn *fn) { | |
Name **stk, *n; | Name **stk, *n; | ||
int d, nt; | int d, nt; |