fordító optimalizálás - kód visszafejtés.izso/rec/ea04_v2.pdf · fordító...
TRANSCRIPT
![Page 1: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/1.jpg)
Fordító részei Optimalizálás
Fordító –OptimalizálásKód visszafejtés.
Izsó Tamás
2013. október 9.
Izsó Tamás Fordítás –Optimalizálás / 1
![Page 2: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/2.jpg)
Fordító részei Optimalizálás
Section 1
Fordító részei
Izsó Tamás Fordítás –Optimalizálás / 2
![Page 3: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/3.jpg)
Fordító részei Optimalizálás
Irodalom
Izsó Tamás Fordítás –Optimalizálás / 3
![Page 4: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/4.jpg)
Fordító részei Optimalizálás
Irodalom
Izsó Tamás Fordítás –Optimalizálás / 4
![Page 5: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/5.jpg)
Fordító részei Optimalizálás
Irodalom“01-fm-i-viii-9780120884780” — 2011/1/13 — 15:54 — page ii — #2
Izsó Tamás Fordítás –Optimalizálás / 5
![Page 6: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/6.jpg)
Fordító részei Optimalizálás
Miért kell ismerni a fordítót?
általában a fordító által generált kódot kell visszafejteni;ha ismerjük a fordító által alkalmazott kódtranszformációt,hamarabb rájöhetünk az eredeti tartalomra;tesztelni kell a fordítót;mert a fordító is azokat az algoritmusokat használja akód elemzéshez, melyeket a modern decompiler-ek.(Miért, amikor a fordító rendelkezésére áll az eredetiforrás?)
Izsó Tamás Fordítás –Optimalizálás / 6
![Page 7: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/7.jpg)
Fordító részei Optimalizálás
Fordító részei
karakter sorozat
Lexikaielemzo
tokenek sorozata
Szintaktikaianalízis
absztrakt szintaktikai fa
Szemantikaiellenorzés
absztrakt szintaktikai fa
Közbensokódge-nerálás
szimbólum-tábla
hiba logolás
közbenso ábrázolás
Gépfüggetlenkódopti-malizáló
közbenso ábrázolás
Kódgenerátor
processzor függo kód
Gépi kódfüggo
optimalizálás
processzor függo kód
Izsó Tamás Fordítás –Optimalizálás / 7
![Page 8: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/8.jpg)
Fordító részei Optimalizálás
Lexikai elemzo
1 double calc( double initial, double rate )2 {3 double position;4 position = initial+rate*100;5 return position;6 }
Izsó Tamás Fordítás –Optimalizálás / 8
![Page 9: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/9.jpg)
Fordító részei Optimalizálás
Lexikai elemzo
double calc( double initial, double rate ) \n{ \n double position; \n position = initial+rate*100; \n return position; \n } \n
DOUBLEID
calc"(" DOUBLE
ID
initial
"," DOUBLEID
rate")" "{"
DOUBLEID
position";"
ID
position "="
ID
position "+"ID
rate"*"
NUMBER
100
";" "RETURN"ID
position";"
Izsó Tamás Fordítás –Optimalizálás / 9
![Page 10: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/10.jpg)
Fordító részei Optimalizálás
Token
token – szintaktikai kategória, csoport;élo nyelvben: ige, fonév, melléknév, tárgy;programozási nyelvekben: egész konstans, valós konstans,string, azonosító, operátor, kulcsszó, írásjelek;
lexéma – konkrét megvalósulása egy tokennek;attribútum – tokenhez rendelt tulajdonság, érték
elmaradhat (pl. T_FOR)típusegész konstans , valós konstans , sztring értéke;méret;élettartam;láthatóságstb.
nem token: szóköz, megjegyzés
Izsó Tamás Fordítás –Optimalizálás / 10
![Page 11: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/11.jpg)
Fordító részei Optimalizálás
Blokk struktúra
i n t main ( ){
i n t a=1;i n t b=1;{
i n t a=3;p r i n t f ("%d %d \ n " , a , b ) ;
}
{i n t b=4;p r i n t f ("%d %d \ n " , a , b ) ;
}p r i n t f ("%d %d \ n " , a , b ) ;r e t u r n 0 ;
}
Izsó Tamás Fordítás –Optimalizálás / 11
![Page 12: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/12.jpg)
Fordító részei Optimalizálás
Szimbólum tábla
a tokenizálás során keletkezett azonosítókat, és azazokhoz kapcsolódó attribútumokat tárolja;megorzi a blokkstruktúrát;OOP esetén a származtatást;gyorsan lehet benne keresni;
sokszor a kulcsszavakat is tartalmazza (pl. for, while).
Izsó Tamás Fordítás –Optimalizálás / 12
![Page 13: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/13.jpg)
Fordító részei Optimalizálás
Szintaktikia analízis
lexikai elemzés után tokenek sorozatát kapjuk;cél a program szerkezetének az értelmezése akörnyezetfüggetlen nyelvtani szabályok (context-freegrammar CFG) alapján (muveletek, precedencia);cél a hibák felderítése;absztrakt szintaxisfa (abstract syntax tree – AST)elkészítése.
Izsó Tamás Fordítás –Optimalizálás / 13
![Page 14: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/14.jpg)
Fordító részei Optimalizálás
Szintaktikia analízisre eredménye
function
body
stmtlist
stmtlist
endRETURN
NUM100
=
+
*
NUM100
identrate
identinitial
identposition
declist
endidentposition
paramlist
paramlist
endidentrate
identinitial
identcalc
Izsó Tamás Fordítás –Optimalizálás / 14
![Page 15: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/15.jpg)
Fordító részei Optimalizálás
Szemantikai analízis célja
Olyan hibák felderítése, amit a CFG-ben nehéz, vagy nemlehet megadni.További információk gyujtése.
1 extern void f ( i n t n ) ;2 double calc ( )3 { i n t ∗p1 , ∗p2 ;4 i n t i , j ;5 . . . .6 p1 = p1 + i ; /∗ OK ∗ /7 p1 = p1 + p2 ; /∗ Hiba ∗ /8 i f ( f (∗p1 ) ) /∗ Hiba f ( ) void ∗ /9 {
10 i = j [ 2 ] ; /∗ Hiba ∗ /11 i = j [ p1 ] ; /∗ OK ∗ /12 }13 /∗ Nincs visszatérési érték ∗ /14 }
Izsó Tamás Fordítás –Optimalizálás / 15
![Page 16: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/16.jpg)
Fordító részei Optimalizálás
Miért használunk közbenso kódot (Intermediatereprezentáció)
Assemblyelony – alkalmas az optimalizálásra;hátrány – gépfüggo;hátrány – minden egyes processzorra újrakellene írni az optimalizálót.
IRelony – alkalmas az optimalizálásra;elony – gépfüggetlen.
Izsó Tamás Fordítás –Optimalizálás / 16
![Page 17: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/17.jpg)
Fordító részei Optimalizálás
IR fajtái
Forrás program és a gépi kód közötti átmenet.Magas szintu — eredeti program visszaállítható (kivételmegjegyzések, tagolások). Felhasználják szintaxisvezérelt editorokban, pretty printing funkciókban. (pl.AST). A parser a fordításnál ezt állítja elo;Alacsony szintu — minden sora majdnem egy gépiutasításra fordítható;Közepes szintu — bizonyos struktúrákat megöriznek a jobboptimalizálás érdeképen. Például a magasszintu vezérlésiszerkezeteket vagy index operátorokat tartalmaznak.
Reprezentáció:
gráf alapú (AST, vezérlés-áram gráf, adatáram gráf) ;lineáris;vegyes.
Izsó Tamás Fordítás –Optimalizálás / 17
![Page 18: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/18.jpg)
Fordító részei Optimalizálás
Intermediate Language (IL)
IL a közbenso ábrázolás (IR) nyelvtani szabályait tartalmazzaminden fordító saját IL-t használ, akár többet is;IL = magasszintu assembly nyelv
felhasználható regiszterek száma nincs korlátozva;assembly nyelv szintu vezérlési szerkezetekgépi utasításokat használnak, de egyes utasítások lehetnekmagasszintuek is
pl. call több assembly utasításra fordullegtöbb IL utasítás egy gépi utasításra fordítható
Izsó Tamás Fordítás –Optimalizálás / 18
![Page 19: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/19.jpg)
Fordító részei Optimalizálás
Lineáris Intermediate Language típusai
egy operandusú (stack szervezésu gépek pl. JVM);két operandusú x ← x < op > y ;három operandusú z ← x < op > y ;
push 2push ymulpush xsub
egy operandusú
t1 = 2t2 = yt1 = t1 ∗ t2t3 = xt3 = t3 − t1
két operandusú
t1 = 2t2 = yt3 = t1 ∗ t2t4 = xt5 = t4 − t1
három operandusú
x − 2 ∗ y
Izsó Tamás Fordítás –Optimalizálás / 19
![Page 20: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/20.jpg)
Fordító részei Optimalizálás
Adatfüggoségi gráf
1. loadAI r0, 0 → r12. add r1, r1 → r13. loadAI r0, 8 → r24. mult r1, r2 → r15. loadAI r0, 16 → r26. mult r1, r2 → r17. loadAI r0, 24 → r28. mult r1, r2 → r19. storeAI r1 → r0,0
ILOC kód
1
2
4
6
8
9
3
5
7
Izsó Tamás Fordítás –Optimalizálás / 20
![Page 21: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/21.jpg)
Fordító részei Optimalizálás
Quadruples (négyes)
Muvelet Op1 Op2 EredményloadI 2 t1load y t2mult t1 t2 t3load x t4sub t4 t3 t5
Izsó Tamás Fordítás –Optimalizálás / 21
![Page 22: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/22.jpg)
Fordító részei Optimalizálás
Triples (hármas)
A triples, indirekt triples ábrázolás csak ciklus éselágazásmentes, azaz alapblokkban alkalmazható. (Alapblokkdefiníciója késobb lesz.)
Zárójelben írt érték az adott utasítás eredményére hivatkozik.
(1) loadI 2(2) load y(3) mult (1) (2)(4) load x(5) sub (4) (3)
Hátránya, hogy a sorok átrendezése nehézkes.
Izsó Tamás Fordítás –Optimalizálás / 22
![Page 23: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/23.jpg)
Fordító részei Optimalizálás
Indirekt triples
Zárójelbe írt érték az adott utasításhoz rendelt [j] indexenkeresztül hivatkozik arra az utasításra, melynek az eredményéthasználja. Ha az utasítás sorrendje változik, akkor az indexértéke is módosul.
Index sorszám[1] (1) loadI 2[2] (2) load y[3] (3) mult (1) (2)[4] (4) load x[5] (5) sub (4) (3)
Izsó Tamás Fordítás –Optimalizálás / 23
![Page 24: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/24.jpg)
Fordító részei Optimalizálás
SSA static single assignment
x ← ...y ← ...whi le ( x < k ){
x ← x + 1 ;y ← y + x ;
}
x0 ← ...y0 ← ...i f (x0 ≥ k ) goto nextloop : x1 ← φ(x0, x2) ;
y1 ← φ(y0, y2) ;x2 ← x1 + 1 ;y2 ← y1 + x2 ;i f (x2 < k ) goto loop
next : . . . .
Izsó Tamás Fordítás –Optimalizálás / 24
![Page 25: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/25.jpg)
Fordító részei Optimalizálás
SSA static single assignment
Fordítókkal foglalkozó tudomány a változó definiciós pontjának(def) azt a helyet nevezi, ahol a változó értéket kap. Egyváltozóhoz több helyen is rendelhetünk új értéket.A kifejezések jobb oldalán meghivatkozott változó a változóhasználatát (use) jelenti.SSA esetén a többször definiált változókat a definiálás helyénegy egyedi indexszel különböztetjük meg.A változók használatakor megmondjuk, hogy a használt (use)változó melyik utasításban kapott értéket, azaz hol definiáltuk.Ha a használt változó definiciós pontja nem egyértelmu, mert aprogram különbözo ágán eljutva, több ágon is definiáltuk aváltozót, akkor ennek leírására egy φ függvényt használunk.
1 A φ függvény megadja, hogy a változó értéke mely pontokbankaphatott értéket.
2 A φ függvény a fordítónak szól, belole kód nem keletkezik.3 A φ függvény paramétere minimum ketto, maximum akármennyi,
de csak indexben eltéro változó lehet.Izsó Tamás Fordítás –Optimalizálás / 25
![Page 26: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/26.jpg)
Fordító részei Optimalizálás
Példa 3 operandusú IL-re
int a;int b; t0 = b + c;int c; a = t0 + d;int d; t1 = a * a;a = b + c + d; t2 = b * b;b = a * a + b * b b = t1 + t2;
temporális változók: t0, t1, t2
Izsó Tamás Fordítás –Optimalizálás / 26
![Page 27: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/27.jpg)
Fordító részei Optimalizálás
3 operandusú Intermediate Language
egy utasításnak maximum 3 operandusa lehet;összetett kifejezésnél temporális változókat kell bevezetni;van két operandusú utasítás, pl. t1 = 5;
Izsó Tamás Fordítás –Optimalizálás / 27
![Page 28: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/28.jpg)
Fordító részei Optimalizálás
Intermediate Language utasításkészlete
Értékadás:
var = constant;var = string ;var1 = var2;var = label ;
Izsó Tamás Fordítás –Optimalizálás / 28
![Page 29: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/29.jpg)
Fordító részei Optimalizálás
Intermediate Language utasításkészlete
Aritmetikai operátorok:
var1 = var2 op var3;var1 = constant op var2;var1 = var2 op constant;var = constant1 op constant2;operátorok +.−.∗./,%,|,& stb;
Izsó Tamás Fordítás –Optimalizálás / 29
![Page 30: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/30.jpg)
Fordító részei Optimalizálás
Intermediate Language utasításkészlete
Logikai értékek0 – hamis;nem 0 – igaz.
Logikai muveletek:var3 = var2 == var1;var3 = var2 < var1;var3 = var2 || var1;var3 = var2 && var1;a többi logikai kifejezést ezek segítségével kell eloállítani.
Izsó Tamás Fordítás –Optimalizálás / 30
![Page 31: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/31.jpg)
Fordító részei Optimalizálás
Intermediate Language
Vezérlésátadó utasítások:
névvel rendelkezo cimke L1:Goto label;IfZ value Goto label;IfZ csak a Goto utasítással együtt fordulhat elo;
Izsó Tamás Fordítás –Optimalizálás / 31
![Page 32: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/32.jpg)
Fordító részei Optimalizálás
Intermediate Language
Függvényhívó utasítás:
LCall L1 – esetén a hívott függvény címe fordítási idobenismert.ACall t1 – t1 függvény címe futáskor áll elo (pl. virtuálisfüggvénytábla).
LCall L1;t1 = LCall L1;ACall t1 ;t0 = ACall t1 ;
Izsó Tamás Fordítás –Optimalizálás / 32
![Page 33: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/33.jpg)
Fordító részei Optimalizálás
Intermediate Language
Függvény definiálás:
BeginFunc n; – Függvény törzsének a kezdete, ahol n alokális adatok számára szükséges hely bájtokan.EndFunc – függvény vége;Return t1 – visszatérés visszaadott értékkel;Return – visszatérés a függvénybol.
Izsó Tamás Fordítás –Optimalizálás / 33
![Page 34: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/34.jpg)
Fordító részei Optimalizálás
Intermediate Language
Memória címzés:
t1 = ∗t2t1 = ∗(t2+offset )∗t1 = ∗t2∗(t1 + offset ) = ∗t2offset – negatív vagy pozitív egész érték.
Tömb:t1 [ t2 ] = t3t3 = t1 [ t2 ]az index operátor a C-ben megismert módon muködik.
Izsó Tamás Fordítás –Optimalizálás / 34
![Page 35: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/35.jpg)
Fordító részei Optimalizálás
Példa 3 operandusú IL-re
int x;int y;
L0:t0 = x < y;t1 = x == y;
while(x<=y) { t2 = t0 || t1;x = x + 2; IfZ t2 Goto L1;
} x = x + 2;Goto L0
L1:y = x; y = x;
Izsó Tamás Fordítás –Optimalizálás / 35
![Page 36: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/36.jpg)
Fordító részei Optimalizálás
Section 2
Optimalizálás
Izsó Tamás Fordítás –Optimalizálás / 36
![Page 37: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/37.jpg)
Fordító részei Optimalizálás
Miért van szükség optimalizálásra
AST-bol IR-re való egyszeru áttérés redundanciát okoz;egyes részszámításokat
fel lehet gyorsítani;közös részeket össze lehet vonni;felesleges részeket ki lehet hagyni
mert a programozók lustákfor ciklusba, vagy a feltétel részbe írnak a ciklusvégrehajtása során nem változó kifejezéseket;
Izsó Tamás Fordítás –Optimalizálás / 37
![Page 38: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/38.jpg)
Fordító részei Optimalizálás
A kód optimalizálása kihívást jelent
Cél:az eredményeket helyességét ne befolyásolja ;a leheto leghatékonyabb IR-t állítsa elo;ne tartson sok ideig.
Valóság:néha hibát okoz a kód futásánál;sokáig tart a kódgenerálás.
Legtöbb optimalizálási algoritmus NP-teljes, ha egyáltalánlétezik megoldás.
Izsó Tamás Fordítás –Optimalizálás / 38
![Page 39: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/39.jpg)
Fordító részei Optimalizálás
A program szemamtikáját nem befolyásolóoptimalizálás
felesleges temporális változók megszüntetése;fordítási idoben ismert konstans kifejezések kiszámítása;ciklusban lévo invariáns részek kiemelése;ellenpéldaként meg lehet említeni (szemantikátbefolyásoló optimalizálás) a buborékos rendezéskicserélése gyorsrendezésre.
Izsó Tamás Fordítás –Optimalizálás / 39
![Page 40: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/40.jpg)
Fordító részei Optimalizálás
Példa IR optimalizálására
t0 = x + x;int x; t1 = y;int y; b1 = t0 < t1;bool b1;bool b2; t2 = x + x;bool b3; t3 = y;
b2 = t2 == t3;b1 = x + x < y;b2 = x + x == y; t4 = x + x;b3 = x + x > y; t5 = y;
b3 = t5 < t4;
Izsó Tamás Fordítás –Optimalizálás / 40
![Page 41: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/41.jpg)
Fordító részei Optimalizálás
Példa IR optimalizálására
t0 = x + x;int x; t1 = y;int y; b1 = t0 < t1;bool b1;bool b2; t2 = x + x;bool b3; t3 = y;
b2 = t2 == t3;b1 = x + x < y;b2 = x + x == y; t4 = x + x;b3 = x + x > y; t5 = y;
b3 = t5 < t4;
Izsó Tamás Fordítás –Optimalizálás / 41
![Page 42: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/42.jpg)
Fordító részei Optimalizálás
Példa IR optimalizálására
t0 = x + x;int x; t1 = y;int y; b1 = t0 < t1;bool b1;bool b2; t2 = x + x;bool b3; t3 = y;
b2 = t2 == t3;b1 = x + x < y;b2 = x + x == y; t4 = x + x;b3 = x + x > y; t5 = y;
b3 = t5 < t4;
Izsó Tamás Fordítás –Optimalizálás / 42
![Page 43: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/43.jpg)
Fordító részei Optimalizálás
Példa IR optimalizálására
t0 = x + x;int x; t1 = y;int y; b1 = t0 < t1;bool b1;bool b2; t2 = x + x;bool b3; t3 = y;
b2 = t0 == t1;b1 = x + x < y;b2 = x + x == y; t4 = x + x;b3 = x + x > y; t5 = y;
b3 = t1 < t0;
Izsó Tamás Fordítás –Optimalizálás / 43
![Page 44: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/44.jpg)
Fordító részei Optimalizálás
Példa IR optimalizálására
t0 = x + x;int x; t1 = y;int y; b1 = t0 < t1;bool b1;bool b2;bool b3;
b2 = t0 == t1;b1 = x + x < y;b2 = x + x == y;b3 = x + x > y;
b3 = t1 < t0;
Izsó Tamás Fordítás –Optimalizálás / 44
![Page 45: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/45.jpg)
Fordító részei Optimalizálás
Lusta programozó munkájának az optimalizálása
L0:while( x < y+ z ) { t0 = y + z;
x = x - y; t1 = x < t0;} IfZ t1 Goto L1
x = x - y;Goto L0;
L1:
Izsó Tamás Fordítás –Optimalizálás / 45
![Page 46: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/46.jpg)
Fordító részei Optimalizálás
Lusta programozó munkájának az optimalizálása
L0:while( x < y+ z ) { t0 = y + z;
x = x - y; t1 = x < t0;} IfZ t1 Goto L1
x = x - y;Goto L0;
L1:
Izsó Tamás Fordítás –Optimalizálás / 46
![Page 47: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/47.jpg)
Fordító részei Optimalizálás
Lusta programozó munkájának az optimalizálása
t0 = y + z;while( x < y+ z ) { L0:
x = x - y; t1 = x < t0;} IfZ t1 Goto L1
x = x - y;Goto L0;
L1:
Izsó Tamás Fordítás –Optimalizálás / 47
![Page 48: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/48.jpg)
Fordító részei Optimalizálás
Lusta programozó munkájának az optimalizálása
t0 = y + z;while( x < y+ z ) { L0:
x = x - y; t1 = x < t0;} IfZ t1 Goto L1
x = x - y;Goto L0;
L1:
Izsó Tamás Fordítás –Optimalizálás / 48
![Page 49: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/49.jpg)
Fordító részei Optimalizálás
IR megjelenítése
BeginFunc 40;t0 = LCal l ReadInteger ;a = t0 ;t1 = LCal l ReadInteger ;b = t1 ;
L0 :t2 = 0;t3 = b == t2 ;t4 = 0 ;t5 = t3 == t4 ;I f Z t5 Goto L1 ;
c = a ;a = b ;t6 = c % a ;b = t6 ;Goto L0 ;
L1 :PushParam a ;LCal l P r i n t I n t ;PopParams 4;
EndFunc ;
Izsó Tamás Fordítás –Optimalizálás / 49
![Page 50: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/50.jpg)
Fordító részei Optimalizálás
IR megjelenítése
BeginFunc 40;t0 = LCal l ReadInteger ;a = t0 ;t1 = LCal l ReadInteger ;b = t1 ;
L0 :t2 = 0;t3 = b == t2 ;t4 = 0 ;t5 = t3 == t4 ;I f Z t5 Goto L1 ;
c = a ;a = b ;t6 = c % a ;b = t6 ;Goto L0 ;
L1 :PushParam a ;LCal l P r i n t I n t ;PopParams 4;
EndFunc ;
Izsó Tamás Fordítás –Optimalizálás / 50
![Page 51: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/51.jpg)
Fordító részei Optimalizálás
IR megjelenítése
t0 = LCal l ReadInteger ;a = t0 ;t1 = LCal l ReadInteger ;b = t1 ;
t2 = 0 ;t3 = b == t2 ;t4 = 0 ;t5 = t3 == t4 ;I f Z t5 Goto L1 ;
c = a ;a = b ;t6 = c % a ;b = t6 ;Goto L0 ;
PushParam a ;LCal l P r i n t I n t ;PopParams 4;
L1
L0
Izsó Tamás Fordítás –Optimalizálás / 51
![Page 52: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/52.jpg)
Fordító részei Optimalizálás
Alapblokk (Basic Block)
az IR utasításainak a lineáris sorozata;egy belépési ponttal rendelkezik;egy kilépési pontja van, és ez a sorozat végén található;olyan utasítások sorozata, amelyek a blokk végrehajtásasorán biztosan végrehajtódnak.Alapblokkok kezdete és vége :
a program elso utasítása az elso blokk kezdete;minden olyan hely, amelyre távolról át lehet adni a vezérlést(Goto, LCall, ACall ) egy új blokk kezdetét jelenti;ugró utasítás csak a blokk végén lehet;minden blokk vége után egy új blokk kezdodik (kivéve azutolsót).
Izsó Tamás Fordítás –Optimalizálás / 52
![Page 53: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/53.jpg)
Fordító részei Optimalizálás
Vezérlési folyamatgráf – Control Flow Gráf (CFG)
irányított gráfcsomópontjai az alapblokkok halmaza;az élek a blokkok végpontjából egy másik blokk belépésipontjára mutatnak;egy csomópontból több él léphet ki;egy csomópontba több alapblokkból is el lehet jutni.
Izsó Tamás Fordítás –Optimalizálás / 53
![Page 54: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/54.jpg)
Fordító részei Optimalizálás
Optimalizálás fajtái
lokális – egy blokkon belül;globális – teljes vezérlési folyamatgráfra.
Izsó Tamás Fordítás –Optimalizálás / 54
![Page 55: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/55.jpg)
Fordító részei Optimalizálás
Lokális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = t0;IfZ x Goto L0;
t1 = y;z = t1;
t2 = y;x = t2;
end
Izsó Tamás Fordítás –Optimalizálás / 55
![Page 56: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/56.jpg)
Fordító részei Optimalizálás
Lokális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = t0;IfZ x Goto L0;
t1 = y;z = t1;
t2 = y;x = t2;
end
Izsó Tamás Fordítás –Optimalizálás / 55
![Page 57: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/57.jpg)
Fordító részei Optimalizálás
Lokális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = t1;
t2 = y;x = t2;
end
Izsó Tamás Fordítás –Optimalizálás / 55
![Page 58: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/58.jpg)
Fordító részei Optimalizálás
Lokális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = t1;
t2 = y;x = t2;
end
Izsó Tamás Fordítás –Optimalizálás / 55
![Page 59: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/59.jpg)
Fordító részei Optimalizálás
Lokális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = y;
t2 = y;x = t2;
end
Izsó Tamás Fordítás –Optimalizálás / 55
![Page 60: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/60.jpg)
Fordító részei Optimalizálás
Lokális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = y;
t2 = y;x = t2;
end
Izsó Tamás Fordítás –Optimalizálás / 55
![Page 61: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/61.jpg)
Fordító részei Optimalizálás
Lokális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = y;
t2 = y;x = y;
end
Izsó Tamás Fordítás –Optimalizálás / 55
![Page 62: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/62.jpg)
Fordító részei Optimalizálás
Lokális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = y;
t2 = y;x = y;
end
Izsó Tamás Fordítás –Optimalizálás / 55
![Page 63: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/63.jpg)
Fordító részei Optimalizálás
Globális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = y;
t2 = y;x = y;
end
Izsó Tamás Fordítás –Optimalizálás / 56
![Page 64: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/64.jpg)
Fordító részei Optimalizálás
Globális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = y;
t2 = y;x = y;
end
Izsó Tamás Fordítás –Optimalizálás / 56
![Page 65: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/65.jpg)
Fordító részei Optimalizálás
Globális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = 137;
t2 = y;x = 137;
end
Izsó Tamás Fordítás –Optimalizálás / 56
![Page 66: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/66.jpg)
Fordító részei Optimalizálás
Globális optimalizálás
i n t f ( i n t x ) {i n t y ;i n t z ;y = 137;i f ( x == 0)
z = y ;e lse
x = y ;}
t0 = 137;y = 137;IfZ x Goto L0;
t1 = y;z = 137;
t2 = y;x = 137;
end
Izsó Tamás Fordítás –Optimalizálás / 56
![Page 67: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/67.jpg)
Fordító részei Optimalizálás
Ismétlodo kifejezések kiszurése
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = Call Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4 ;a = t3 ;t4 = a + b ;c = t4 ;t5 = a + b ;PushParam t5 ;PushParam x ;Call set ;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 57
![Page 68: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/68.jpg)
Fordító részei Optimalizálás
Ismétlodo kifejezések kiszurése
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = Call Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4 ;a = t3 ;t4 = a + b ;c = t4 ;t5 = a + b ;PushParam t5 ;PushParam x ;Call set ;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 57
![Page 69: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/69.jpg)
Fordító részei Optimalizálás
Ismétlodo kifejezések kiszurése
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = Call Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4 ;a = t3 ;t4 = a + b ;c = t4 ;t5 = t4 ;PushParam t5 ;PushParam x ;Call set ;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 57
![Page 70: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/70.jpg)
Fordító részei Optimalizálás
Ismétlodo kifejezések kiszurése
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = Call Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4 ;a = t3 ;t4 = a + b ;c = t4 ;t5 = t4 ;PushParam t5 ;PushParam x ;Call set ;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 57
![Page 71: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/71.jpg)
Fordító részei Optimalizálás
Ismétlodo kifejezések kiszurése
Ha van két értékadás
v1 = a op b· · ·
v2 = a op b
és az a és b operandusok értéke közben nem változik,akkor a következo transzformációt hajthatjuk végre
v1 = a op b· · ·
v2 = v1
Ezzel elhagyjuk az ismétlodo számításokat.lehetoséget teremtünk egy késobbi optimalizáláshoz.
Izsó Tamás Fordítás –Optimalizálás / 58
![Page 72: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/72.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = t3 ;t4 = a + b ;c = t4 ;t5 = t4;PushParam t5 ;PushParam x ;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 73: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/73.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = t3 ;t4 = a + b ;c = t4 ;t5 = t4;PushParam t5 ;PushParam x ;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 74: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/74.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = t3 ;t4 = a + b ;c = t4 ;t5 = t4;PushParam t5 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 75: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/75.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = t3 ;t4 = a + b ;c = t4 ;t5 = t4;PushParam t5 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 76: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/76.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = t3 ;t4 = t3 + b ;c = t4 ;t5 = t4;PushParam t5 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 77: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/77.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = t3 ;t4 = t3 + b ;c = t4 ;t5 = t4;PushParam t5 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 78: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/78.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = t3 ;t4 = t3 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 79: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/79.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = t3 ;t4 = t3 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 80: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/80.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 81: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/81.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = 4 ;t4 = 4 + b ;c = t4 ;t5 = c;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 82: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/82.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 83: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/83.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 59
![Page 84: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/84.jpg)
Fordító részei Optimalizálás
Másolat továbbterjedés
angol szakirodalomban a Copy Propagation kifejezés él;ha lehet, akkor máshol is az eredeti példányra szeretnénkhivatkozni;Ha van egy értékadás
v1 = v2
és a továbbiakban a v1 és v2 operandusok értéke nemváltozik, akkor a következo transzformációt hajthatjukvégre
a = · · · v1 · · ·
lecseréljük:
a = · · · v2 · · ·
Ez a transzformáció késobb a segítségünkre lesz.
Izsó Tamás Fordítás –Optimalizálás / 60
![Page 85: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/85.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 86: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/86.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;x = t1 ;t3 = 4;a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 87: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/87.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
t3 = 4;a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 88: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/88.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
t3 = 4;a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 89: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/89.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 90: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/90.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
a = 4 ;t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 91: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/91.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 92: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/92.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
t4 = 4 + b ;c = t4 ;t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 93: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/93.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
t4 = 4 + b ;
t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 94: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/94.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
t4 = 4 + b ;
t5 = t4;PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 95: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/95.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése (Dead Code Elimination)
int* x;int a;int b;int c;x = new int(2);a = 4;c = a + b;set(x,a + b);
t0 = 4 ;PushParam t0 ;t1 = LCall Alloc ;PopParams 4 ;t2 = 2 ;*(t1) = t2 ;
t4 = 4 + b ;
PushParam t4 ;PushParam t1;Call set;PopParams 8 ;
Izsó Tamás Fordítás –Optimalizálás / 61
![Page 96: Fordító Optimalizálás - Kód visszafejtés.izso/rec/ea04_v2.pdf · Fordító részeiOptimalizálás Fordító –Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október](https://reader031.vdocuments.pub/reader031/viewer/2022040210/5e4e7beb91a09f5709474668/html5/thumbnails/96.jpg)
Fordító részei Optimalizálás
Felesleges utasítások törlése
Értékadás bal oldalán található változó akkor felesleges,ha az értékét a késobbiekben nem használjuk fel.Ha az értékadás bal oldalán található változó felesleges,akkor az egész utasítást el lehet hagyni.
Izsó Tamás Fordítás –Optimalizálás / 62