Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Σχετικά έγγραφα
Θέματα Μεταγλωττιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Μεταγλωττιστές. Παραγωγή Ενδιάμεσου Κώδικα. Εργαστήριο 8. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Θέματα Μεταγλωττιστών

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

Μεταγλωττιστές Βελτιστοποίηση

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

ιαφάνειες παρουσίασης #11

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Θέματα Μεταγλωττιστών

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες

Η γλώσσα προγραμματισμού Strange

Διαδικασιακός Προγραμματισμός

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές Βελτιστοποίηση

FORT320. Γενική Περιγραφή. Ειδική Περιγραφή. Α. Λεκτικές Μονάδες

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ.

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Εισαγωγή στον Προγραμματισμό

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Ανάπτυξη και Σχεδίαση Λογισμικού

Περιεχόμενα. Περιεχόμενα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

ΤΟΜΟΣ Α : Συμβολικός Προγραμματισμός

Προγραμματισμός Ι (HY120)

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο Σύντομη Επανάληψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

Θέματα Μεταγλωττιστών

Δομές Δεδομένων (Data Structures)

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Η γλώσσα προγραμματισμού EEL

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Παραγωγή Ενδιάµεσου Κώδικα. Γιώργος Μανής

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος lantzos@teiser.gr

Παραγωγή Ενδιάµεσου Κώδικα

Περιεχόμενα Πρόλογος 1. Εισαγωγή 2. Τα Βασικά Μέρη ενός Προγράμματος Prolog

Προγραμματισμός Ι (ΗΥ120)

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ (ΟΜΑΔΑ ΘΕΜΑΤΩΝ A)

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 5 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΑΕΠΠ Ερωτήσεις θεωρίας

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Στοιχειώδης προγραμματισμός σε C++

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

Ανάπτυξη και Σχεδίαση Λογισμικού

PASC320. Γενική Περιγραφή. Ειδική Περιγραφή. Α. Λεκτικές Μονάδες

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

Δομές ελέγχου ροής προγράμματος

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Πληροφορική 2. Γλώσσες Προγραμματισμού

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

Βασικές Έννοιες Δοµών Δεδοµένων

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο Σύντοµη Επανάληψη

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

a = 10; a = k; int a,b,c; a = b = c = 10;

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Περιεχόμενα. Πρόλογος... 21

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

Θέματα Μεταγλωττιστών

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Ανάπτυξη εφαρμογών/ Βασικές γνώσεις/ πρώτο θέμα ΕΡΩΤΗΣΕΙΣ ΣΥΝΤΟΜΗΣ ΑΠΑΝΤΗΣΗΣ

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Transcript:

Γιώργος Δημητρίου Μάθημα 9 ο

Ενδιάμεσος Κώδικας Απεικόνιση ανάμεσα στον αρχικό και στον τελικό κώδικα Γραμμικές αναπαραστάσεις: Ενδιάμεσος κώδικας πλησιέστερα στον τελικό ευκολότερη παραγωγή τελικού κώδικα Αναπαραστάσεις γραφημάτων: Ενδιάμεσος κώδικας πλησιέστερα στον αρχικό περισσότερη πληροφορία, καλή βελτιστοποίηση

Γραμμικές Αναπαραστάσεις Κώδικες τριών διευθύνσεων Κώδικας τετράδων (quadruples): τελεστής, δύο τελούμενα εισόδου και ένα τελούμενο εξόδου b*b-4*a*c 1: *, b, b, $1 2: *, 4, a, $2 3: *, $2, c, $3 4: -, $1, $3, $4 Κώδικας τριάδων (triples): ο αριθμός τριάδας χρησιμοποιείται ως τελούμενο εξόδου

Αναπαραστάσεις Γραφημάτων Αφηρημένα συντακτικά δέντρα (ΑΣΔ) x = a+5 ID G:8 κατευθυνόμενα ακυκλικά γραφήματα Ιεραρχικά γραφήματα ακολουθούν φωλιάσματα δομημένων εντολών καλά για βελτιστοποιήσεις = ID L:7 + ICONST 5

Τι Πρέπει να Περιέχει Πανεπιστήµιο Θεσσαλίας - Τµήµα Πληροφορικής ο Ενδιάμεσος Κώδικας Πληροφορίες για προσπέλαση δεδομένων τύποι δεδομένων οργάνωση χώρου δεδομένων (ΧΔ) Πληροφορίες αποτίμησης εκφράσεων τελεστές και τελούμενα Πληροφορίες εκτέλεσης εντολών σημασιολογία εντολών Πληροφορίες ελέγχου ροής σειρά εκτέλεσης εντολών

Σχεδίαση ΧΔ Διαφορετικός χώρος για κάθε κατηγορία αποθήκευσης Υλοποίηση με τη βοήθεια Πίνακα Δέσμευσης Για κάθε βαθμωτή μεταβλητή δεσμεύεται μία θέση και αναγράφεται ο τύπος της απλοί/σύνθετοι τύποι Ενημερώνεται ο ΠΣ Κάθε αναφορά στη μεταβλητή αναφέρεται σε αυτή τη θέση

Ανάλυση Εντολών Αποτίμηση εκφράσεων Τιμές αριστερής / δεξιάς προσπέλασης Εντολές Αναθέσεις Εντολές ελέγχου ροής Εντολές βρόχων Κλήσεις υποπρογραμμάτων Μπλοκ εντολών (Σύνθετες εντολές)

Αριστερή / Δεξιά Προσπέλαση Τιμή αριστερής προσπέλασης (l-value): Διεύθυνση στην οποία μπορεί να γίνει ανάθεση, όπως καθορίζει η σημασιολογία της γλώσσας Βαθμωτές μεταβλητές ή μεταβλητές πίνακα/εγγραφής Παράμετροι κατ αναφορά Τιμή δεξιάς προσπέλασης (r-value): Τιμή έκφρασης ή αποτίμηση αριστερής προσπέλασης Τιμές που ανατίθενται Παράμετροι κατ αξία

Απεικόνιση Εκφράσεων Δέντρα εκφράσεων Κατευθυνόμενα ακυκλικά γραφήματα (a+5)*(a+5) ID L:6 Γραμμικές αναπαραστάσεις εκφράσεων Προθεματικός / Επιθεματικός κώδικας: * + a 5 + a 5 a 5 + a 5 + * * + ICONST 5

Παράδειγμα: Πανεπιστήµιο Θεσσαλίας - Τµήµα Πληροφορικής Κατασκευή Δέντρου Έκφρασης E E op E { $$.code = make_node($2, $1, $3); } E ( E ) { $$.code = $2.code; } E id { $$.code = make_leaf(id, $1); } E const { $$.code = make_leaf(const, $1); }

Απεικόνιση Εντολών Δέντρα εντολών ή γραμμικές αναπαραστάσεις ID L1:4!= ICONST 0 if ID G:2 if (i!= 0) y = x - 1; = ID L2:5 - ICONST 1 ==,i,0,3 -,x,1,$1 = $1,-,y

Παράδειγμα: Πανεπιστήµιο Θεσσαλίας - Τµήµα Πληροφορικής Κατασκευή Δέντρου Εντολών S if ( E ) S else S { $$.code = make_if_stmt($3, $5, $7); } S while ( E ) S { $$.code = make_while_stmt($3, $5); } S goto ID { $$.code = make_goto_stmt($2); } S { SL } { $$.code = make_compound($2); }

Παράδειγμα: Πανεπιστήµιο Θεσσαλίας - Τµήµα Πληροφορικής Κατασκευή Δέντρου Εντολών Μη ομοιόμορφη κατασκευή Κάθε τύπος εντολής δίνει διαφορετικό δέντρο Όχι απαραίτητα δυαδικό Απεικόνιση διαδοχικών εντολών (Statement List SL) Γραμμική λίστα Δυαδικό δέντρο, όπως προκύπτει άμεσα από τη συντακτική ανάλυση: SL SL S S

Απεικόνιση Ροής Ελέγχου Γράφημα Ροής: Απεικόνιση της διαδοχής των εντολών σε μορφή γραφήματος Συνδέσεις μεταξύ κόμβων του συντακτικού δέντρου, των οποίων η εκτέλεση μπορεί να είναι διαδοχική Κυκλικές δομές για απεικόνιση βρόχων Χρήσιμο για μετάφραση εντολών ροής ελέγχου, βελτιστοποίηση κώδικα και διερμηνεία

Κατασκευή Γραφήματος Ροής Κατασκευή συνδέσεων μεταξύ των κόμβων του συντακτικού δέντρου Απλή για εκφράσεις και εντολές με μία επόμενη εντολή Πιο πολύπλοκη για εντολές ελέγχου ροής, εντολές δηλαδή που έχουν πολλαπλές επόμενες εντολές Πιθανή υλοποίηση με πεδία next, true και false. (Επέκταση για εντολές πολλαπλών επιλογών!)

Μπάλωμα (backpatching) Προγραμματιστική τεχνική για εκ των υστέρων συμπλήρωση του ενδιάμεσου κώδικα Κλήσεις μη δηλωμένων υποπρογραμμάτων (FORTRAN, C) Επίλυση διευθύνσεων ετικετών Άλλες εφαρμογές

Ενδιάμεσος Κώδικας και Πανεπιστήµιο Θεσσαλίας - Τµήµα Πληροφορικής Βελτιστοποίηση Η αναπαράσταση γραφημάτων διατηρεί όλη την πληροφορία που παράγεται από τη συντακτική και σημασιολογική ανάλυση και είναι πιο ευέλικτη στη βελτιστοποίηση Η γραμμική αναπαράσταση χάνει τη δισδιάστατη πληροφορία του δέντρου συντακτικής ανάλυσης κάνοντας κάποιους βελτιστοποιητικούς μετασχηματισμούς πιο δύσκολους

Ενδιάμεσος Κώδικας και Πανεπιστήµιο Θεσσαλίας - Τµήµα Πληροφορικής Παραγωγή Τελικού Κώδικα Η γραμμική αναπαράσταση είναι πολύ κοντά στον τελικό κώδικα, ο οποίος μπορεί να παραχθεί διαδοχικά για κάθε εντολή του ενδιάμεσου κώδικα Η αναπαράσταση γραφημάτων απαιτεί περισσότερη δουλειά στην παραγωγή τελικού κώδικα, αλλά μπορεί να δώσει καλύτερο κώδικα

Διερμηνεία Απ ευθείας στην αρχική γλώσσα: Λεκτική και συντακτική ανάλυση, στη συνέχεια εκτέλεση μέσα από σημασιολογικές ρουτίνες Τιμές μεταβλητών μέσα από κατηγορήματα Διερμηνεία στον ενδιάμεσο κώδικα: Διαπέραση του ενδιάμεσου κώδικα με εκτέλεση των εντολών, ακολουθώντας το γράφημα ροής Πραγματική αποτίμηση εκφράσεων Προσομοίωση του συνολικού χώρου δεδομένων, συμπεριλαμβανομένης της στοίβας