Frage

In Compiler Datenflussanalyse, was ist der Unterschied zwischen einem Live-Bereich einer Variablen und es erreicht Definition? Beide scheinen auf die gleiche Sache zu beziehen ...

War es hilfreich?

Lösung

Sie sind sehr verschiedene Dinge, und ich schlage vor, dass Sie zurückgehen und wieder gelesen je nachdem, welche Definitionen, die Sie verwirrt. Ein Erreichen Definition einer Variablen für einen Punkt, der die gegebene Variable verwendet, muss sein, unter anderem eine Definition dieser Variablen. Die Lebensdauer einer Variablen ist der Teil des Programms, in dem sie verwendet werden können, die anderen Dinge als Definitionen enthält, zum Beispiel zu lesen.

Siehe zum Beispiel des 1986 Drachen Buch, Seiten 534 (vielleicht zu allgemein als hilfreich) und 610.

Andere Tipps

Erreichen der Definitionen werden in Bezug auf eine bestimmte Stelle in einem Programm definiert. Zum Beispiel in Zeile 10 mit dem Code „a = b + c“ es ist nützlich für den Compiler zu wissen, was die Reaching Definition von „c“ ist, oder mit anderen Worten die Frage „beantworten, in welcher Aussage tat Variable c acquire a Wert, die Linie 10 erreichen kann?“.

Live-Bereich ist in Bezug auf eine Variable definiert. Der Live-Bereich der variablen c geht von einer Definition der Variablen c und geht bis zur nächsten Definition der Variablen (an welcher Stelle der Variable getötet wird, oder als eine andere Variable definiert, wenn Sie SSA verwenden), oder das Ende der Rahmen (Block, Funktion oder Programm), die Variable C existiert.

Die beiden Konzepte sind ähnlich, aber sie sind nicht das gleiche.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top