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?


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.