Nachteile der funktionellen Zwischenform

16

Ich schreibe ein Optimierungsprogramm für eine Sprache, die JavaScript ähnelt, und muss eine Zwischencodedarstellung auswählen. Die naheliegende / typische Wahl heutzutage ist Static Single Assignment (SSA).

In Modern Compiler Implementation in C wird jedoch auch die funktionale Zwischenform erörtert, was im Grunde bedeutet, dass die Zwischendarstellung rein funktional ist (rein nur in Bezug auf lokale Variablen, Heap-Daten sind noch veränderbar und nicht CPS, nur einfache letBlöcke und Tail-Aufrufe) und hat einige Vorteile in Bezug auf einfacher zu begründen.

Vermutlich ist es kein Kinderspiel, oder jeder würde bereits eine solche Darstellung verwenden. Meine Frage ist also, welche Nachteile hat die funktionale Zwischenform im Vergleich zur SSA?

Wallace
quelle
3
Welche Art von Analyse werden Sie mit dieser Zwischenform durchführen? SSA eignet sich hervorragend zur Beseitigung von totem Code, zur ständigen Verbreitung, zur teilweisen Spezialisierung und so weiter. Wenn diese Art von Dingen nicht in Ihrem Menü enthalten ist, können Sie SSA überspringen und eine entspanntere Darstellung verwenden, um die Analyse zu vereinfachen. Das Generieren eines SSA-Formulars ist jedoch eine triviale Aufgabe, und Sie können SSA problemlos in CPS konvertieren (und umgekehrt), wodurch sich die Vorteile verdoppeln.
SK-logic
Ja, ich strebe das volle Format an, und die Eingabesprache und das Ausgabeformat (anfangs C ++) sind beide zwingende Sprachen.
rwallace
Das Generieren eines SSA-Formulars ist eine triviale Aufgabe, und Sie können SSA problemlos in CPS konvertieren. Außerdem können Sie CPS in SSA konvertieren, wodurch sich die Vorteile verdoppeln.
Leon Alexis Kardinal

Antworten:

1

SSA eignet sich hervorragend zur Beseitigung von totem Code, zur ständigen Verbreitung, zur teilweisen Spezialisierung und so weiter. Wenn diese Art von Dingen nicht in Ihrem Menü enthalten ist, können Sie SSA überspringen und eine entspanntere Darstellung verwenden, um die Analyse zu vereinfachen

Adromil Balais
quelle