FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Technische Informatik

Gss: Frage zu 2 Adress Maschine

Gss: Frage zu 2 Adress Maschine 2008-06-20 14:01
Anonymer User
Wir sitzen grade am üben und sind im Kapitel 1 über die Seite 25 gestolpert[8] irgendwie kommen wir nicht auf die 13 Leseaufträge
2 Addres Maschine
Die Aufgabe lautet: Berechnung von

Z := (A – B * C) / (B + D / E)

Ergo: Gesamtaufwand für Lösung der Aufgabe:
8 Befehle mit
13 Leseaufträgen an Hsp./Cache

Wir kommen aber immer nur auf 11 ????[26]

RE: Gss: Frage zu 2 Adress Maschine 2008-06-20 14:18
Anonymer User
Soweit ich das verstanden habe, sind alle auf der rechten Seite Leseaufträge, also auch H1,H2. Ergibt auch 13 bei mir. 6 Leseaufträge wenn H1,H2 Register sind, da dann nur A B C D E gelesen werden auf der rechten Seite.

RE: Gss: Frage zu 2 Adress Maschine 2008-09-25 11:13
Mr.Powers
Hänge da auch gerade ein bissel Wiso nur 6 Leseaufträge sofern H1/H2 Register sind?? woher komen die 6 ?
Und auch bei der 1-Adressmaschine und folgendem Befehl Z := (A – B * C) / (B + D / E)
Wiso nur 8 Leseaufträge an Hsp bzw Cache??

RE: Gss: Frage zu 2 Adress Maschine 2008-09-25 18:31
Anonymer User
(1) -> >B< >H1<
(2) * >C< >H1<
(3) - >A< >H1<
(4) -> >E< >H2<
(5) / >D< >H2<
(6) + >B< >H2<
(7) / >H1< >H2<
(8) -> >H2< >Z<

Wenn das die 8 Befehle sind, dann wird doch bei 1-6 jeweils nur 1x was aus dem Speicher gelesen, weil an erster stelle Speicheradressen stehen. Die erste Stelle ist nur für Leseaufträge. Die zweite Stelle ist sowohl für Schreib als auch für Leseaufträge, da ja der Inhalt aus dem jeweiligen Bereich ausgelesen und dann mit dem Ergebnis der Rechnung überschrieben wird. Da bei Befehl 1-6 aber nur Registeradressen an zweiter Stelle stehen bleibt es bei den 6 Leseaufträgen an Hsp/Cache. Im siebten Befehl wird etwas aus einem Register gelesen (erste und zweite Stelle Registeradresse) und auch nur wieder ins Register geschrieben (zweite Stelle Registeradresse)… also kein Hsp/Cache zugriff. Im 8. Befehl wird nur wieder was aus dem Register gelesen und in den Hauptspeicher geschrieben aber nicht gelesen. Also bleibt es bei 6 Leseaufträgen.

Bei der 1-Adressmaschine ist es im Prinzip das gleiche, nur das es keine zweite stelle gibt, die sowohl zum speichern als auch zum laden gebraucht wird, weil immer nur im Akkumulator gespeichert wird oder mit speichere der Inhalt des Akkumulators woanders hingespeichert wird. Also hängt es nur vom Befehl ab wann gelesen und wann geschrieben wird. Bei allen Befehlen die nicht speichere sind wird also gelesen. Wenn man also auch die Ladebefehle an H1, H2 mitzählt (also lade D, / E, + B, lade B, * C, lade A, - H2, / H1) kommt man auf die 8. Wenn man die nicht mitzählt (also lade D, / E, + B, lade B, * C, lade A) kommt man auf 6.

Davon zählt man dann aber nur die, die nicht auf Register zugreifen

RE: Gss: Frage zu 2 Adress Maschine 2008-09-25 18:54
Anonymer User
der letzte Satz aus dem vorigen Posting kann ignoriert werden

RE: Gss: Frage zu 2 Adress Maschine 2008-09-26 10:35
Anonymer User
Vielen dank schon mal und wie ist es bei der 0-Adressmaschine?
Sind da nur die Push befehle lese Aufträge ?

RE: Gss: Frage zu 2 Adress Maschine 2008-09-26 13:36
Anonymer User
Bei der 0-Adressmaschine sind alle außer dem Push Befehl Lese Aufträge. Beim Push Befehl wird ja was auf den stack gelegt… dafür muss nicht gelesen werden. Bei allen arithmetischen operationen wird ja immer etwas vom stack gelesen auf das die operation ausgeführt wird und bei Pop wird ja explizit was vom stack gelesen.