2016-12-02 6 views
0

Je suis en train de convertir un langage de programmation de style impératif en forme normale d'administration (ANF) en utilisant l'algorithme décrit dans cet article: http://www.sciencedirect.com/science/article/pii/S1571066105825964Génération SSA pour les fonctions qui utilisent des pointeurs

Dans le document, Zadarnovsky et al. décrire un algorithme pour convertir un programme SSA sous forme ANF, puis présente un algorithme d'optimisation qui ne m'intéresse pas actuellement.

La question que j'ai est: comment puis-je convertir les variables de pointeur en forme SSA? Un pointeur est une valeur, tout comme un nombre entier ou un nombre flottant est une valeur.

Répondre

0

Voici un example from the libfirm documentation représentant x.z:

compound member access

Ceci est un graphe de dépendance de données (flux de données avec une direction de bord inversé) en forme SSA. Le nœud Adresse jaune contient l'adresse symbolique x. L'opération Membre extrait le pointeur vers le champ z. Les opérations de chargement prennent ce pointeur et y chargent la valeur. La charge prend également une autre valeur via le bord bleu, l'état de la mémoire. Le noeud Proj représente la valeur chargée, qui peut être utilisée par d'autres opérations.