Μεταγλωττιστές (Compilers) (Θ)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Τέλος Ενότητας.
Advertisements

Διατομή σύνθετης δοκού
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Βασικές αρχές ευρετηρίασης
Η ανοσοαποτύπωση ως επιβεβαιωτική μέθοδος
Τριφασικά συμμετρικά δίκτυα σε συνδεσμολογία Υ (1/2)
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
Αυτοματοποιημένη ευρετηρίαση
Διαμόρφωση πεδίων Περιγραφικά πεδία Διαχειριστικά πεδία Δομικά πεδία.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Διάνοιξη πόρων Με ακτινοβολούμενη θερμότητα. Θερμαινόμενα σίδερα.
Καμπυλότητα Φακού P c
Τεχνολογία οφθαλμικών φακών Ι (Ε) Ενότητα 5: Έγχρωμοι φακοί Θεμιστοκλής Γιαλελής, Οπτικός, MSc, PhD candidate ΕΔΙΠ του τμήματος Οπτικής και Οπτομετρίας.
Συμπλήρωση Προτύπου Διδακτικού Σχεδιασμού
Eιδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων
Κανόνες Ασφαλείας Εργοταξίων
ΟΙΚΟΝΟΜΙΚΑ ΤΟΥ ΕΛΕΓΧΟΥ ΤΗΣ ΡΥΠΑΝΣΗΣ
Άλλες μορφές νευρώσεων
Διαχείριση παραγωγής εντύπων 1/2
Επικοινωνιακός Προγραμματισμός Ι
Άσκηση 8 (1 από 3) Προβολές 1. Να επιλέξετε ένα θέμα βασισμένο σε κάποια παράγραφο / υποπαράγραφο του κεφαλαίου 6 των σημειώσεων και να κάνετε μια εργασία.
Τεχνολογία οφθαλμικών φακών Ι (Ε)
Υπολογιστική Γεωμετρία και Εφαρμογές στις ΒΧΔ
Εκτίμηση σωματικού βάρους
Βασικά δεδομένα Το σύστημα υγείας δεν αποτελεί απλά άθροισμα επιμέρους μερών. Τα επιμέρους στοιχεία του συστήματος βρίσκονται σε συνεχή αλληλεξάρτηση.
Παρουσίαση ναυπηγικών γραμμών 1/3
Υπολογιστική Γεωμετρία και Εφαρμογές στις ΒΧΔ 1/12
Ταυτότητα και περίγραμμα μαθήματος
Δίκτυα Υπολογιστών ΙΙ (Ε)
Άσκηση 7 (1 από 5) Υπολογισμοί μηκών τόξων σφαίρας. Το έτος 2035 μ.Χ., μετά από πυρηνική καταστροφή και λόγω του φαινομένου του θερμοκηπίου, που πήρε εκρηκτικές.
ΠΡΟΤΥΠΟ ΕΛΟΤ EN ISO 3251 Ζύγιση μάζας υγρού μελανιού (m1 g)
Ενότητα 13 Αξιολόγηση μαθήματος και διδάσκοντος από την εφαρμογή της Μονάδας Ολικής Ποιότητας (ΜΟΔΙΠ) του ΤΕΙ Αθήνας Αξιολόγηση του μαθήματος Αξιολόγηση.
Τεχνολογία οφθαλμικών φακών Ι (Ε)
Εκτίμηση σωματικού βάρους
Εκτίμηση σωματικού βάρους
Άσκηση 9 (1 από 2) Ανακαλύψτε στο χάρτη σας μερικά χαρτογραφικά αντικείμενα που να ανήκουν στις παρακάτω κατηγορίες : φυσικά, τεχνητές κατασκευές, αφηρημένα.
Εκτίμηση σωματικού βάρους
Τοπολογικές σχέσεις 1/3 Βρείτε και περιγράψτε τις τοπολογικές σχέσεις σύμφωνα με τους (Pantazis, Donnay 1996) για τα παρακάτω γεω-γραφικά αντικείμενα:
Επιλογή φλέβας για λήψη φλεβικού αίματος 1/7
Κανονικοποίηση ΤΙ ΕΙΝΑΙ ; Τεχνική Διαδικασία
Επικοινωνιακός Προγραμματισμός Ι
Εικαστικές συνθέσεις - Χρώμα στο χώρο
Γενική και Μαθηματική Χαρτογραφία (Ε)
Οργάνωση και Διοίκηση Πρωτοβάθμιας (Θ)
Λιθογραφία – Όφσετ (Θ) Ενότητα 8.2: Εκτυπωτική Διαδικασία Μηχανής
Επικοινωνιακός Προγραμματισμός Ι
Ενότητα 9: Συστήματα Υγείας στην Ευρώπη: Σουηδία
Αισθητική Σώματος Ι (Ε)
Αισθητική Σώματος Ι (Ε)
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
Ειδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων -E
Γενική και Μαθηματική Χαρτογραφία (Ε)
Ψυχιατρική Ενότητα 12: Εισαγωγή στις νευρώσεις
Αισθητική Σώματος Ι (Ε)
Ενότητα 5.2: Αιθέρες Χριστίνα Φούντζουλα Τμήμα Ιατρικών Εργαστηρίων
Ενότητα 8: Συστήματα Υγείας στην Ευρώπη: Γαλλία
Eιδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων -Θ
Συστήματα Θεματικής Πρόσβασης (Θ)
Ψυχιατρική Ενότητα 7: Συνέχεια σταδίων
Κοσμητολογία ΙΙ (Θ) Ενότητα 3: Kρέμες (γ’ μέρος)
Ανοσολογία (Ε) Ενότητα 3: Αιμοσυγκόλληση Πέτρος Καρκαλούσος
Γενική και Μαθηματική Χαρτογραφία (Ε)
Οργανική Χημεία (Ε) Ενότητα 2: Προσδιορισμός σημείου τήξης
Ενότητα 1: ……………….. Όνομα Επώνυμο Τμήμα __
Αισθητική προσώπου Ι (Ε)
Σύσταση και Ανάλυση Γλευκών και Οίνων (Θ)
Αισθητική ηλεκτροθεραπεία σώματος
Ενότητα 6: Δονήσεις Γεωργία Πέττα Τμήμα Φυσικοθεραπείας
Αισθητική ηλεκτροθεραπεία σώματος
Επικοινωνιακός Προγραμματισμός Ι
Μεταγράφημα παρουσίασης:

Μεταγλωττιστές (Compilers) (Θ) Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Μεταγλωττιστές (Compilers) (Θ) Ενότητα 12: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Β) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Περιεχόμενα Μαθήματος Εισαγωγή στους Μεταφραστές Γλώσσες & Γραμματικές Λεκτική Ανάλυση Συντακτική Ανάλυση Σημασιολογική Ανάλυση & Πίνακες Συμβόλων Παραγωγή Ενδιάμεσου Κώδικα Βελτιστοποίηση Ενδιάμεσου Κώδικα Παραγωγή & Βελτιστοποίηση τελικού κώδικα

Βελτιστοποίηση ενδιάμεσου κώδικα Intermediate code generation Symbol Table Ενδιάμεσος Κώδικας Intermediate code optimizer Assembly - Assembler  Back end part Machine code generator Machine code optimizer

Βελτιστοποίηση κώδικα Σκοπός αυτής της φάσης είναι να παράγει ταχύτερο και μικρότερου όγκου τελικό κώδικα μ' έναν αυτόματο τρόπο. Τα κριτήρια που πρέπει να σεβαστούμε είναι τα εξής : Η συμπεριφορά του βελτιστοποιημένου κώδικα πρέπει να είναι ακριβώς η ίδια μ' εκείνη του αρχικού (δηλαδή : ίδιες είσοδοι => ίδιες έξοδοι). Ο χρόνος εκτέλεσης και ο όγκος πρέπει να είναι μικρότεροι αν και καμιά φορά δεν υπάρχει δυνατότητα συμβιβασμού.

Παράδειγμα Βελτιστοποίησης Πηγαίος κώδικας Αντίστοιχος κώδικας 3-διευθύνσεων i := m-1 (15) x := a[t6] j:=n (16) t7:= 4*i (3) t1:=4*n (17) t8:=4*j (4) v := a[t1] (18) t9=a[t8] (5) i := i+1 (19) a[t7] := t9 (6) t2:=4*i (20) t10:= 4*j (7) t3:=a[t2] (21) a[t10]:=x (8) if t3 < v goto (5) (22) goto (5) (9) j :=j-1 (23) t11:= 4*i (10) t4:=4*j (24) x := a [t11] (11) t5:=a[t4] (25) t12 :=4*i (12) if t5<v goto(9) (26) t13 :=4*n (13) if i >= j goto (23) (27) t14 := a[t13] (14) t6=4*i (28) a[t12]:= t14 (29) t15 :=4*n (30) a[t15] := x void quicksort(m,n) int m, n { int i,j; int v,x; if (n<=m) return; i=m-1; j=n; v=a[n]; while(1) { do i=i+1;while(a[i]<v); do j=j-1;while(a[j]>v); if (i>=j) break; x=a[i]; a[i]=a[j]; a[j]=x; } x=a[i]; a[i]=a[n]; a[n]=x; quicksort(m,j); quicksort(i+1,n);

Οργάνωση ενδιάμεσου κώδικα σε μπλοκ (1) i := m-1 (16) t7:= 4*i (2) j:=n (17) t8:=4*j (3) t1:=4*n (18) t9=a[t8] (4) v := a[t1] (19) a[t7] := t9 (5) i := i+1 (20) t10:= 4*j (6) t2:=4*i (21) a[t10]:=x (7) t3:=a[t2] (22) goto (5) (8) if t3 < v goto (5) (23) t11:= 4*i (9) j :=j-1 (24) x := a [t11] (10) t4:=4*j (25) t12 :=4*i (11) t5:=a[t4] (26) t13 :=4*n (12) if t5>v goto(9) (27) t14 := a[t13] (13) if i >= j goto (23) (28) a[t12]:= t14 (14) t6=4*i (29) t15 :=4*n (15) x := a[t6] (30) a[t15] := x B1 B2 B6 B3 B4 B5

Μπλοκ Ένα μπλοκ είναι ένα σύνολο εντολών εκ των οποίων μόνο η τελευταία είναι πάντα μία διακλάδωση (goto) και μόνο η πρώτη είναι η διεύθυνση μιας άλλης διακλάδωσης Μ' άλλα λόγια, οι εντολές ενός μπλοκ (εκτός από την τελευταία) είναι όλες γραμμικές

Αλγόριθμοι Βελτιστοποίησης Απαλοιφή κοινών υπολογισμών, Μετάδοση αντιγραφών, Απαλοιφή νεκρών εντολών, Μεταφορά εντολών έξω από τους βρόχους, Απλοποίηση συσχετισμένων εντολών.

Απαλοιφή κοινών υπολογισμών Β3 … t4:=4*j Β3 … t5:=a[t4] Β2 … t2:=4*i Β2 … t3:=a[t2]

Μετάδοση αντιγραφών Έστω ο ενδιάμεσος κώδικας: x : = t1 + t2 ……. y :=x Εάν δεν υπάρχει ενδιάμεση μετατροπή του x, τότε εδώ θα γράψουμε : x := t1 + t2 …… y:= t1 + t2 Παράδειγμα:

Απαλοιφή νεκρών εντολών (1 από 2) Μια εντολή θεωρείται νεκρή όταν : Δεν πρόκειται να εκτελεστεί ποτέ, Π.χ. Η εκτέλεση της δεν χρησιμεύει σε τίποτα στη συνέχεια. Π.χ. if a=b then..... else..... Όπου α, β σταθερές με διαφορετική τιμή if x=y then if y=8 then if x>10 then ………. else ...

Απαλοιφή νεκρών εντολών (2 από 2) Παράδειγμα

Μεταφορά έξω από βρόχους Σε κάθε βρόχο που διαθέτει ένα μόνο σημείο εισόδου κι ένα σημείο εξόδου, αυτή η βελτίωση συνίσταται στο να μεταφέρουμε ακριβώς πριν από το βρόχο τις εντολές εκείνες (ή τις πράξεις) που δεν εξαρτώνται από αυτόν.

Απλοποίηση συσχετισμένων εντολών Δύο εντολές είναι συσχετισμένες όταν η μια ακολουθεί την άλλη και η μετατροπή της ή των μεταβλητών που εμφανίζονται στη δεύτερη συσχετίζονται (εξαρτώνται) άμεσα από τις τιμές των μεταβλητών που εμφανίζονται στην πρώτη. B3 j:=j-1 t4 := 4 * j t5:=a[t4] If t5>v goto B3 B3 Συσχετίζοντας τις 2 πρώτες εντολές έχουμε: t4 := 4*j = 4*(j-1) = 4*j-4 = t4–4 (κάθε φορά που το j μειώνεται κατά μία μονάδα το t4 μειώνεται κατά 4 )

Τελικό αποτέλεσμα βελτιστοποίησης

Τέλος Ενότητας

Σημειώματα

Σημείωμα Αναφοράς Copyright Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας, Κατερίνα Γεωργούλη 2014. Κατερίνα Γεωργούλη. «Ενότητα 12: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Β)». Έκδοση: 1.0. Αθήνα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: ocp.teiath.gr.

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. Οι όροι χρήσης των έργων τρίτων επεξηγούνται στη διαφάνεια «Επεξήγηση όρων χρήσης έργων τρίτων». Τα έργα για τα οποία έχει ζητηθεί άδεια αναφέρονται στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

Επεξήγηση όρων χρήσης έργων τρίτων Δεν επιτρέπεται η επαναχρησιμοποίηση του έργου, παρά μόνο εάν ζητηθεί εκ νέου άδεια από το δημιουργό. © διαθέσιμο με άδεια CC-BY Επιτρέπεται η επαναχρησιμοποίηση του έργου και η δημιουργία παραγώγων αυτού με απλή αναφορά του δημιουργού. διαθέσιμο με άδεια CC-BY-SA Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού, και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. διαθέσιμο με άδεια CC-BY-ND Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η δημιουργία παραγώγων του έργου. διαθέσιμο με άδεια CC-BY-NC Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Δεν επιτρέπεται η εμπορική χρήση του έργου. διαθέσιμο με άδεια CC-BY-NC-SA διαθέσιμο με άδεια CC-BY-NC-ND Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου και η δημιουργία παραγώγων του. διαθέσιμο με άδεια CC0 Public Domain Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. διαθέσιμο ως κοινό κτήμα χωρίς σήμανση Συνήθως δεν επιτρέπεται η επαναχρησιμοποίηση του έργου.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.