| Autor |
Nachricht |
|
| Simson |
Verfasst am: 13 Jan 2011 16:18 |
|
|
|
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 |
|
| Nach oben |
|
| lamborgotti |
Verfasst am: 13 Jan 2011 18:56 |
|
|
|
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 |
|
|
| Nach oben |
|
| konrada |
Verfasst am: 14 Jan 2011 11:27 |
|
|
|
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. |
|
|
| Nach oben |
|
| konrada |
Verfasst am: 14 Jan 2011 11:34 |
|
|
|
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. |
|
|
| Nach oben |
|
| konrada |
Verfasst am: 14 Jan 2011 11:48 |
|
|
|
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. |
|
|
| Nach oben |
|
| lamborgotti |
Verfasst am: 15 Jan 2011 13:20 |
|
|
|
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')} ? |
|
|
| Nach oben |
|
| Simson |
Verfasst am: 15 Jan 2011 14:24 |
|
|
|
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. |
|
|
| Nach oben |
|
| lamborgotti |
Verfasst am: 16 Jan 2011 1:22 |
|
|
|
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
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 |
|
|
| Nach oben |
|
| konrada |
Verfasst am: 16 Jan 2011 19:23 |
|
|
|
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. |
|
|
| Nach oben |
|
|
|