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 let
Blö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?
quelle
Antworten:
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
quelle