SSA

Для того чтобы понять как строится SSA в Phoenixe, я воспользовался примером XML-plug-in.
Как им пользоваться уже было показанно: здесь.

Приведу в пример простую программу, с условным переходом и циклом.

#include<stdio.h>
int main()
{  
   int a,b;
   a=2;
   b=1;
   if (a>1)
      b++;
   else
      b=a+3;
  for(;a>0;a--)
      b=b+a; 
   return 0;
}

Во время просмотра ее В IRExplorere(Картинки в присоединенных файлах), видно как программа меняется от фазы к фазе.
Нумерация переменных и PHI функции появляются только на одной фазе Ssa Info Construction, а после фазы Ssa Info Destruction изчезают. Во время каждой операции присваивания появляется новая переменная, имя которой состоит из имени самой переменной и порядкого номера. Все переменные в функции нумеруются по порядку вне зависимости от имени(нет двух переменных с одним номером).
Как работает PHI функция я еще не разобрался.Например она может вызывается от еще не определенной переменной, например при первом проходе цикла.

\\Ramz
14.10.06

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.