generovanie cieľového prgramu zo stromu
DESCRIPTION
Generovanie cieľového prgramu zo stromu. Cieľového kódu. Základ pre algoritmus generovania inštrukcií. Vyu žíva sa rekurzívna štruktúra stromu – každý podstrom je strom Elementárny strom je koncový vrchol Ohodnotenie vrcholov Vnútorných operátormi Koncových operandami - PowerPoint PPT PresentationTRANSCRIPT
Generovanie cieľového prgramu zo stromu
Cieľového kódu
Základ pre algoritmus generovania inštrukcií Využíva sa rekurzívna štruktúra stromu – každý
podstrom je strom Elementárny strom je koncový vrchol Ohodnotenie vrcholov
– Vnútorných operátormi– Koncových operandami
Dôsledok tohoto ohodnotenia– Ak má vrchol nasledovníkov, vyhodnocujú sa najprv
nasledovníci Vyhodnotenie stromu sa realizuje „prechádzaním
stromu
Vzťah stromovej reprezentácie a triád Triada zodpovedá stromu s ohodnotením
– Vrchol operátor triady– Nasledovníci zodpovedajú operandom triády
Príklad
Majme výraz
(a * b + c) * (d – e) / ( - f)
V triádach a v strome mu zodpovedá
Triády a strom daného príkladu
1. *, a, b
2. +, (1), c
3. -, d, e
4. *, (2), (3)
5. NEG, , f
6. /, (4), (5)
/
* NEG
+ -
* c
a b
d e
f
Algoritmus
Vstup: program (aritmetický výraz) v postfixe Výstup: postupnosť inštrukcií Algoritmus očísluje vrcholy stromu číslami určujúcimi
poradie vyhodnocovania – realizácie operácií Ďalej používa rekurzívnu procedúru KOMP, ktorú
aplikuje na koreň stromu Algoritmus je riadený tabuľkami Operandami teraz môžu byť: zhromažďovač, adresa,
vnútorný vrchol – budeme sa naň odvolávať cez jeho číslo.
Tabuľky algoritmu
Tabuľka pre +
P L
Z
A(P)
Číslo(P)
Z
-
ADD A(P)
STORE Ti KOMP(Číslo(P)) ADD Ti
A(L)
ADD A(L)
LOAD A(L) ADD A(P)
KOMP(Číslo(P)) ADD A(L)
Číslo (L)
-
KOMP(Číslo(L)) ADD A(P)
KOMP(Číslo(L)) Return
Tabuľka pre -
P L
Z
A(P)
Číslo (P)
Z
-
SUB A(P)
-
A(L)
STORE Ti Return
LOAD A(L) SUB A(P)
Komp(Číslo(P)) STORE Ti Return
Číslo(L)
STORE Ti
Komp(Číslo(L)) SUB Ti
Komp(Číslo(L)) SUB A(P)
Komp(Číslo(P)) Return
Tabuľka pre zmenu znamienka
NEG
Číslo
Z
A
Komp(Číslo) CHZ
CHZ
LOAD A CHZ
Algoritmus – metóda
1. Očísluj vnútorné vrcholy stromu (zhora nadol, zľava doprava)
2. Použi procedúru Komp na koreň stromu
Príklad
Majme aritmetický výraz zo slidu : 4 a 5
Výsledok očíslovania vnútorných vrcholov 1. *, a, b
2. +, (1), c
3. -, d, e
4. *, (2), (3)
5. NEG, , f
6. /, (4), (5)
/
* NEG
+ -
* c
a b
d e
f
1
2 3
4 5
6
Generovanie inštrukcií
Činnosť Operácia Vybratá položka
Generované inštrukcie
Komp(6) /, (4), (5)Komp(5)Return
Komp(5) NEG, , fLOAD a
CHZLOAD f
CHZ
Return (5)
Komp(6) /, (4), ZSTORE Ti Komp(4)DIV Ti
STORE T1
Generovanie inštrukcií – Cont.
Komp(4) *, (2), (3)Komp(2)Return
Komp(2) +, (1), cKomp(1)
ADD A(P)
Komp(1) *, a, bLOAD A(L)MPY A(P)
LOAD aMPY b
Return (1) ADD c
Retutn (2)
Generovanie inštrukcií – Cont
Komp(4) *, Z, (3)STORE Ti
KOMP(3)MPY Ti
STORE T2
Komp(3) -, d, eLOAD A(L)SUB A(P)
LOAD dSUB e
Retutn (3)
Retutn (4)
Retutn (6)
MPY T2
DIV T1