• Keine Ergebnisse gefunden

2 OptimalerRegisterverbrauchf¨urAusdr¨ucke 1 Baum¨ubersetzungsverfahren

N/A
N/A
Protected

Academic year: 2022

Aktie "2 OptimalerRegisterverbrauchf¨urAusdr¨ucke 1 Baum¨ubersetzungsverfahren"

Copied!
22
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

1 Baum¨ubersetzungsverfahren

2 Optimaler Registerverbrauch f¨ur Ausdr¨ucke

(2)

=

ind

+

+

Ca RSP

ind

+

Ci RSP

+

Mb C1

Zwischencodebaum f¨ur a[i] = b + 1

Zusatzfolien Codeerzeugung Wintersemester 2008/09 2 / 22

(3)

Baumersetzungsregeln (1/3)

1: Ri ←− Ca LD Ri, #a

2: Ri ←− Mx LD Ri, x

3:

M ←− =

Mx Ri

ST x, Ri

4:

M ←− =

ind

Ri

Rj ST * Ri, Rj

(4)

5:

Ri ←− ind

+

Ca Rj

LD Ri, a(Rj)

6:

Ri ←− +

Ri ind

+

Ca Rj

ADD Ri, Ri, a(Rj)

Zusatzfolien Codeerzeugung Wintersemester 2008/09 4 / 22

(5)

Baumersetzungsregeln (3/3)

7:

Ri ←− +

Ri Rj

ADD Ri, Ri, Rj

8:

Ri ←− +

Ri C1

INC Ri

(6)

=

ind

+

+

Ca RSP ind

+

Ci RSP +

Mb C1

Anwendung von Regel1 m¨oglich

Zusatzfolien Codeerzeugung Wintersemester 2008/09 6 / 22

(7)

Beispiel Baum¨ ubersetzungsverfahren

=

ind

+

+

R0 RSP ind

+

Ci RSP +

Mb C1

LD R0, #a

Anwendung von Regel7 m¨oglich

(8)

=

ind

+

R0

R0 RSP ind

+

Ci RSP +

Mb C1

LD R0, #a

ADD R0, R0, RSP

Anwendung von Regel5 m¨oglich

Zusatzfolien Codeerzeugung Wintersemester 2008/09 8 / 22

(9)

Beispiel Baum¨ ubersetzungsverfahren

=

ind

+

R0

R0 RSP

R1

+

Ci RSP

+

Mb C1

LD R0, #a

ADD R0, R0, RSP

LD R1, i(RSP)

Achtung: Es gibt eine Alternative

(10)

=

ind

+

R0

R0 RSP ind

+

Ci RSP +

Mb C1

LD R0, #a

ADD R0, R0, RSP

Anwendung von Regel6 m¨oglich

Zusatzfolien Codeerzeugung Wintersemester 2008/09 10 / 22

(11)

Beispiel Baum¨ ubersetzungsverfahren

=

ind

R0

R0

R0 RSP R1

+

Ci RSP +

Mb C1

LD R0, #a

ADD R0, R0, RSP

ADD R0, R0, i(RSP)

Anwendung von Regel2 m¨oglich

(12)

=

ind

R0

R0

R0 RSP R1

+

Ci RSP +

R1 C1

LD R0, #a

ADD R0, R0, RSP

ADD R0, R0, i(RSP) LD R1, b

Anwendung von Regel8 m¨oglich

Zusatzfolien Codeerzeugung Wintersemester 2008/09 12 / 22

(13)

Beispiel Baum¨ ubersetzungsverfahren

=

ind

R0

R0

R0 RSP R1

+

Ci RSP R1

R1 C1

LD R0, #a

ADD R0, R0, RSP

ADD R0, R0, i(RSP) LD R1, b

INC R1

Anwendung von Regel4 m¨oglich

(14)

M

ind

R0

R0

R0 RSP

R1

+

Ci RSP

R1

R1 C1

LD R0, #a

ADD R0, R0, RSP

ADD R0, R0, i(RSP) LD R1, b

INC R1

ST *R0, R1

Baumreduktion ist abgeschlossen

Zusatzfolien Codeerzeugung Wintersemester 2008/09 14 / 22

(15)

1 Baum¨ubersetzungsverfahren

2 Optimaler Registerverbrauch f¨ur Ausdr¨ucke

(16)

Problematik:

Um eine Operation zu berechnen, berechne zun¨achst ihre Operanden.

Wert eines Operanden wird in Register gespeichert; F¨ur weitere Operanden steht ein Register weniger zur verf¨ugung.

⇒ Optimaler Code berechnet Operanden mit kleinstem Registerverbrauch zuletzt.

Zusatzfolien Codeerzeugung Wintersemester 2008/09 16 / 22

(17)

Baum mit Ershov-Zahlen

+

-

a b

*

e +

c d

1 1

1 1

1 2

2 2

3

Ausdruck: (a−b) +e∗(c+d)

(18)

Ershov-Zahlengeben die Zahl der Register an, die zur Auswertung eines Ausdrucks ben¨otigt werden.

Markieren eines Ausdrucksbaums:

1 Kennzeichne alle Bl¨atter mit 1.

2 Bei 2 Kindern:

gleiche Kennzeichnung der Kinder: ¨ubernimm Kennzeichnung plus 1

sonst: nimm gr¨oßte Kennzeichnung der Kinder

3 Allgemein: F¨ur absteigend sortierte Markierungen der Kinder M1, . . . ,Mn:

max(M1,M2+ 1, . . . ,Mn+ (n−1))

Zusatzfolien Codeerzeugung Wintersemester 2008/09 18 / 22

(19)

Codeerzeugung

Mit rekursivem Algorithmus. Register werden relativ zu

momentaner Basisb verwendet (Rb,Rb+1, . . .). Beginne an der Wurzel mit Basisb = 0. Pro Knoten:

1 Sortiere Kinder nach absteigender Ershov-Zahl (Registerverbrauch).

2 Erzeuge Code f¨ur KinderknotenK0,K1, . . . ,Kn−1 mit Basis b,b+ 1, . . . ,b+ (n−1)

3 Erzeuge Operation: OPRb,Rb,Rb+1, . . . ,Rb+n−1.

(20)

+

-

a b

*

e +

c d

1 1

1 1

1 2

2 2

3

LD R1, d LD R2, c ADD R1, R2, R1 LD R2, e MUL R1, R2, R1 LD R2, b LD R3, a SUB R2, R3, R2 ADD R1, R2, R1

Zusatzfolien Codeerzeugung Wintersemester 2008/09 20 / 22

(21)

Auslagern

Modifikation bei beschr¨ankter Registerzahlk:

1 Sortiere Kinder nach absteigender Ershov-Zahl (Registerverbrauch).

2 b0←b.

3 F¨ur jeden KinderknotenKi ∈ {K0, . . . ,Kn−1}.

a Erzeuge Code f¨urKi mit Basisb.

b Falls Markierung des n¨achsten Kindes plus weitere Operanden Mi+1+ni gr¨oßer alsk: Erzeuge Auslagerungsbefehl STtx,Rb

c bb+ 1.

4 Lade ausgelagerte Operanden in RegisterRb,Rb+1, . . .:

LDRb, t.

5 Erzeuge Operation: OPRb0,Rb0,Rb0+1, . . . ,Rb0+n−1.

(22)

+

-

a b

*

e +

c d

1 1

1 1

1 2

2 2

3 LD R1, d

LD R2, c ADD R1, R2, R1 LD R2, e MUL R1, R2, R1 ST t1, R1 LD R2, b LD R3, a SUB R2, R3, R2 LD R1, t1 ADD R1, R2, R1

Zusatzfolien Codeerzeugung Wintersemester 2008/09 22 / 22

Referenzen

ÄHNLICHE DOKUMENTE

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung.. unter dem Förderkennzeichen

• Register Allocation: Determine which variables are implemented by registers at which positions.. • Register Assignment: Determine which register implements which variable at

Register allocation by graph coloring is a procedure (with many variants) for allocation of registers beyond expressions and basic blocks. Register Allocation

(Invariant) Code Motion: Platziere Knoten in einem Vorgängerblock, falls dieser auch von seinen Operanden dominiert wird. Nicht-invariante Knoten haben mindestens einen Operanden in

Wert eines Operanden wird in Register gespeichert; Für weitere Operanden steht ein Register weniger zur Verfügung.. ⇒ Optimaler Code berechnet Operanden mit kleinstem

Dazu verfügt es über einen Akkumulator als Rechenregister, ein Register für den Operanden und ein Register für die Operation.

Handels-Abgaben, Reglement für das Comptoir zur Erhebung derselben.. Handels-Abgaben, Revision im Jahre 1867 und spätere

[r]