Was ist der Unterschied zwischen A-Normalisierung und K-Normalisierung in Compilern?


7

Die administrative Normalform ist eine Programmzwischenrepräsentation, in der jede unmittelbare Anweisung einen Namen hat. Es wird in GHC und OCaml verwendet .

Die K-normalisierte Form ist eine Zwischendarstellung, in der jeder Befehl aus einer Zuordnung und Operation besteht. Es wird in MLKit, Min-Caml und GoCaml verwendet.

Sowohl bei der A-Normalisierung als auch bei der K-Normalisierung wird ein let-Ausdruck mit einer Fortsetzung erzeugt.

A-Normalisierung und K-Normalisierung scheinen genau die gleiche Transformation zu sein. Was ist der Unterschied zwischen ihnen, so dass sie unterschiedliche Namen verdienen?

Antworten:


2

Soweit mein Suchfoo mich führte; K-Normal Form ist von A-Normal Form inspiriert , jedoch für die Verwendung in der Speichermodusanalyse instrumentiert. Hierbei handelt es sich um eine statische Programmanalyse, mit der auf Speicherverwaltungsanweisungen für Funktionsprogramme geschlossen werden kann.

Der Begriff scheint aus der folgenden Veröffentlichung zu stammen: L. Birkedal, M. Tofte und M. Vejlstrup. Von der Regionsinferenz zu von Neumann-Maschinen über die Regionsrepräsentationsinferenz.

Eine Kopie der Veröffentlichung ist zum Zeitpunkt des Schreibens auf der Fakultätswebseite von L.Birkedal unter Veröffentlichungen erhältlich .


2
Obwohl der Ursprung des Begriffs interessant ist, sehe ich nicht direkt, wie dies einen Unterschied erklärt. Können Sie klarstellen, was genau der Unterschied zwischen den beiden Normalisierungsverfahren ist? (falls vorhanden?)
Diskrete Eidechse

1
Gemäß dem Artikel ( cs.cmu.edu/afs/cs/user/birkedal/pub/rri-popl96.ps.gz ) bindet die K-Normalform jeden Zwischenausdruck an eine Variable, linearisiert jedoch nicht die Let-Bindungen weil dies die Inferenz der Region behindern würde.
Wirklich Nonstrict

1
Ich habe die Antwort noch nicht aktualisiert, da ich derzeit verstehe, dass die Linearisierung von Let-Bindungen nicht Teil der Definition von ANF ist. Daher bin ich mir nicht sicher, ob dies ein Unterschied ist. Ein weiterer möglicher Unterschied, der in dem Papier erwähnt wird, ist, dass die Begriffe getippt werden müssen, aber wenn dies nur in Bezug auf das in dem Papier angegebene Typensystem erwähnt wird, ist mir dies auch nicht klar.
Soren-n
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.