Lösung zu Aufgabe 7.1 --------------------- Übersetzung Anweisung für Anweisung: MOVE A R1 SUB 40 R1 LOAD I R2 MULT 4 R2 ADD R1 R2 -- R2 enthält dann h3 MOVE R2 R1 -- Beachte: R2 später noch benötigt ADD 12 R1 LOAD R1 R1 MULT 2 R1 ADD 30 R1 STORE R2 R1 -- h3 in R2, h8+30 in R1 Optimierungen: - MULT 2 R1 ersetzen durch ADD R1 R1 - die beiden LOADs und ein STORE können nicht vermieden werden - ebenso sind mind. 2 Register nötig - noch möglich: Anzahl Instruktionen minimieren (MOVE sparen) MOVE A R1 einsparen: Neuer Code für Berechnung von h1 - h3: LOAD I R2 MULT 4 R2 ADD A R2 SUB 40 R2 -- R2 = I*4 + adr(A) - 40 MOVE R2 R1 einsparen: Berechnung von h3 hinauszögern LOAD I R2 MULT 4 R2 ADD A R2 SUB 28 R2 -- R2 = I*4 + adr(A) - 40 + 12 = h7 LOAD R2 R1 ADD R1 R1 -- R1 = h8 ADD 30 R1 SUB 12 R2 -- R2 jetzt = h3 STORE R2 R1 Ergebnis: 2 MOVE gespart, ADD statt MULT