16.09.2017 Aufrufe

Vorkurs Informatik

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

18.4 Übersetzung 295<br />

Ableitung Ersetzung Ableitung Ersetzung<br />

Schritt 1<br />

E<br />

E<br />

E<br />

⇒ a 1 ∗ (T + T)+T<br />

⇒ E + T<br />

⇒ a 1 ∗ (F + T)+T<br />

⇒ T + T<br />

⇒ a 1 ∗ (a 2 + T)+T<br />

⇒ T ∗ F + T<br />

⇒ a 1 ∗ (a 2 + F)+T<br />

⇒ F ∗ F + T<br />

⇒ a 1 ∗ (a 2 + a 3 )+T<br />

⇒ a 1 ∗ F + T<br />

⇒ a 1 ∗ (a 2 + a 3 )+F<br />

⇒ a 1 ∗ (E)+T ⇒ a 1 ∗ (a 2 + a 3 )+a 4<br />

⇒ a 1 ∗ (E + T)+T<br />

Schritt 2<br />

⇒ a 1 ∗ (T + T)+T<br />

⇒ E + T<br />

⇒ a 1 ∗ (F + T)+T<br />

⇒ T + T<br />

⇒ a 1 ∗ (a 2 + T)+T<br />

⇒ T ∗ F + T<br />

⇒ a 1 ∗ (a 2 + F)+T<br />

⇒ F ∗ F + T<br />

⇒ a 1 ∗ (a 2 + a 3 )+T<br />

⇒ a 1 ∗ F + T ⇒ a 1 ∗ (a 2 + a 3 )+F f 5 := a 4 ;<br />

⇒ a 1 ∗ (E)+T ⇒ a 1 ∗ (a 2 + a 3 )+a 4<br />

⇒ a 1 ∗ (E + T)+T<br />

Schritt 3<br />

⇒ a 1 ∗ (T + T)+T<br />

⇒ E + T<br />

⇒ a 1 ∗ (F + T)+T<br />

⇒ T + T<br />

⇒ a 1 ∗ (a 2 + T)+T<br />

⇒ T ∗ F + T<br />

⇒ a 1 ∗ (a 2 + F)+T<br />

⇒ F ∗ F + T ⇒ a 1 ∗ (a 2 + a 3 )+T t 6 := f 5 ;<br />

⇒ a 1 ∗ F + T ⇒ a 1 ∗ (a 2 + a 3 )+F f 5 := a 4 ;<br />

⇒ a 1 ∗ (E)+T ⇒ a 1 ∗ (a 2 + a 3 )+a 4<br />

⇒ a 1 ∗ (E + T)+T<br />

Abbildung 18.6: Darstellung der ersten drei Schritte einer Übersetzung<br />

Die Variablen e i ,f i ,t i sind Hilfsvariablen zum Abspeichern von Zwischenergebnissen. Hierfür<br />

werden typischerweise Register des Prozessors verwendet. Abbildung 18.8 zeigt eine Zuordnung<br />

von Registern an die Hilfsvariablen. Wir nehmen dabei an, dass die hier benötigten sieben<br />

Register beim verwendeten Prozessor zur Verfügung stehen. Durch Ersetzen der Variablen t i ,f i<br />

und e i in unserem Programm entsprechend der Registerzuordnung ergibt sich das in Abbildung<br />

18.8 gezeigte Endergebnis.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!