Arbeitsbereich Programmiersprachen Foren-Übersicht
Autor Nachricht

<  Archiv WS 2010/2011  ~  Spezifikation der Liveness-Analyse

Simson
Verfasst am: 13 Jan 2011 16:18 Antworten mit Zitat
Anmeldungsdatum: 23.10.2007 Beiträge: 55
Können wir davon ausgehen, dass pos(l) die Position in der Liste des mit l betitelten Statements zurück gibt? l ist also ein Label.


Zuletzt bearbeitet von Simson am 16 Jan 2011 2:14, insgesamt ein Mal bearbeitet
Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer
lamborgotti
Verfasst am: 13 Jan 2011 18:56 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
hallo,

was muss man da machen?

was bedeutet die zeile flow?
flow([l : NOOP]^i) = {(i, i + 1)} 8i 2 {0, . . . , n − 1}
flow soll die abbildung sein von einem statement, in die mentge der statements, die danach kommen können?
was heisst l ? bzw l:NOPP ein statement l vom typ noop? und was ist das i? die Position?
Warum ist dann das i in der Menge rechts drin?
Meiner Meinung müsste doch jetzt nach einem Noop immer auf i+1 sein?

was soll ich mit pos, initial und final?
also was soll ich konkret in die pdf tun? für jede art von befehl eine gleichung für flow?
und nochmal für jede art von statement ein def und ein use?
ich weiss nicht, wozu ich initial und final und pos brauchen soll.
Was heisst, oder was ist gemeint mit: "You may want to
define auxiliary definitions for expressions etc."

und dann ist die überschrift "liveness - analysis". Dann hab ich ja noch nicht definiert, wann die dinger jetzt live sind oderwie ?

mfg
jan
Benutzer-Profile anzeigen Private Nachricht senden
konrada
Verfasst am: 14 Jan 2011 11:27 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
Simson hat folgendes geschrieben::
Können wir davon ausgehen, dass pos(l) die Position in der Liste des mit l betitelten Statements zurück gibt? l ist also ein Label.


Du wirst irgendeine Hilfsfunktion brauchen, die Labels auf Statementlistenindizes abbildet; pos, so wie im Aufgabentext definiert, tut das noch nicht. Du kannst aber eine Hilfsfunktion verwenden, sie pos nennen und irgendwo definieren.
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
konrada
Verfasst am: 14 Jan 2011 11:34 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
lamborgotti hat folgendes geschrieben::
hallo,
was bedeutet die zeile flow?
flow([l : NOOP]^i) = {(i, i + 1)} 8i 2 {0, . . . , n − 1}
flow soll die abbildung sein von einem statement, in die mentge der statements, die danach kommen können?
was heisst l ? bzw l:NOPP ein statement l vom typ noop? und was ist das i? die Position?
Warum ist dann das i in der Menge rechts drin?
Meiner Meinung müsste doch jetzt nach einem Noop immer auf i+1 sein?


Die flow-Gleichungen bilden Statements auf Kantenmengen ab. Die angegebene Gleichung besagt, dass ein NOOP mit Label klein-L an Position i (die Notation ist auch auf den Programmanalyseslides vom Dezember so; Leseempfehlung) eine Kante von Knoten i nach Knoten i+1 beisteuert.

Manche Statementtypen steuern mehr als eine Kante bei, manche weniger als eine Kante, deswegen bildet flow auf eine Menge von Kanten ab, nicht auf eine einzelne Kante.
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
konrada
Verfasst am: 14 Jan 2011 11:48 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
lamborgotti hat folgendes geschrieben::

was soll ich mit pos, initial und final?
also was soll ich konkret in die pdf tun? für jede art von befehl eine gleichung für flow?

und dann ist die überschrift "liveness - analysis". Dann hab ich ja noch nicht definiert, wann die dinger jetzt live sind oderwie ?


Die Livenessanalyse (Folien vom 24.11.) nimmt als Eingabe einen Kontrollflussgraphen, bei dem von jedem Knoten die use- und die def-Menge bekannt ist. Wenn Du also die Gleichungen angibst, mit dem man aus einer beliebigen Folge von Statements den Kontrollflussgraphen rekonstruiert (flow), und die Gleichungen, mit denen man aus beliebigen Statements ihre use- und def-Mengen bestimmt (use, def), dann ist sämtlicher Input fuer den Algorithmus gegeben, mit dem er die live-in und live-out-Mengen an den Knoten berechnet.

Also kurz: ich erwarte fuer jeden Statementtyp die Definition von flow, use und def.
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lamborgotti
Verfasst am: 15 Jan 2011 13:20 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
gut, es ist also nur die eingabe der linveness analyse und nicht die analys selber, das hast mich irritiert.

ok, aber wie schreib ich jetzt das für den cjump-befehl auf?
bzw wie mach ichs allgemeint, wenn das statement parameter hat?
schreib ich die parameter so da rein:
[l : CJUMP e l']^i e ist expression und l' ist ein label
und wie greif ich dann auf die position von dem label zu?
oder kann ich einfach schreiben: = {(i, i+1), (i, l')} ?
Benutzer-Profile anzeigen Private Nachricht senden
Simson
Verfasst am: 15 Jan 2011 14:24 Antworten mit Zitat
Anmeldungsdatum: 23.10.2007 Beiträge: 55
Naja, das war doch eigentlich auch meine Frage, oder?
konrada hat folgendes geschrieben::
Simson hat folgendes geschrieben::
Können wir davon ausgehen, dass pos(l) die Position in der Liste des mit l betitelten Statements zurück gibt? l ist also ein Label.


Du wirst irgendeine Hilfsfunktion brauchen, die Labels auf Statementlistenindizes abbildet; pos, so wie im Aufgabentext definiert, tut das noch nicht. Du kannst aber eine Hilfsfunktion verwenden, sie pos nennen und irgendwo definieren.
Benutzer-Profile anzeigen Private Nachricht senden ICQ-Nummer
lamborgotti
Verfasst am: 16 Jan 2011 1:22 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
ich mein aber in dem formalen teil nicht in der implementierung
ich hab des so verstanden, dass ... hm keine ahnung
aber ich wusste nicht, dass du das damit machen willst
Wink
aber meine frage wird zumindest nicht von konrads antwort auf deine frage beantwortet
also meine frag ist, wie ich das cjump oder das move oder sonstwas formal hinschreiben soll, dass ich auf der rechten seite die argumente verwenden kann
Benutzer-Profile anzeigen Private Nachricht senden
konrada
Verfasst am: 16 Jan 2011 19:23 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
Fuer CJUMP brauchst Du eine Funktion, die Labels auf Positionen abbildet. Dann ist es ganz einfach, eine Menge von Paaren von natuerlichzahligen Positionen aufzuschreiben.
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Beiträge vom vorherigen Thema anzeigen:  

Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.

Gehe zu:  

Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.