Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΙπποκράτης Αλεξάνδρου Τροποποιήθηκε πριν 6 χρόνια
1
Μεταγλωττιστές Μεταγλωττιστής είναι το λογισμικό το οποίο πραγματοποιεί την μετάφραση ενός προγράμματος από μία γλώσσα σε μία άλλη. Γιατί ασχολούμαστε με τη μελέτη της δομής και των τεχνικών ανάπτυξης μεταγλωττιστών; κατανόηση του τρόπου λειτουργίας τους και καλύτερη αξιοποίηση των δυνατοτήτων τους δυνατότητα δημιουργίας νέων γλωσσών (προγραμματισμού, σεναρίων, εντολών κ.α.) ή απλών λειτουργιών αναγνώρισης συμβολοσειρών και αυτοματοποιημένης επεξεργασίας κειμένου εξοικείωση με τεχνικές αναπαράστασης δεδομένων σε επίπεδο μηχανής ΕΑΠ – ΠΛΗ24
2
Front End Back End Φάσεις Μεταγλώττισης ΕΑΠ – ΠΛΗ24
3
Λεκτική ανάλυση Παράδειγμα
Έχει σαν στόχο την ομαδοποίηση των χαρακτήρων του πηγαίου προγράμματος σε λογικές οντότητες, σύμφωνα με τον ορισμό της πηγαίας γλώσσας. Οι ομάδες χαρακτήρων ονομάζονται ατομικές λεκτικές μονάδες (tokens). Κάθε token έχει τύπο και μπορεί να έχει τιμή. Παράδειγμα Έκφραση sum=sum+2*a Λ.Μ. Τύπος Τιμή sum όνομα = τελεστής + 2 αριθμός * a ΕΑΠ – ΠΛΗ24
4
Συντακτική ανάλυση Δέχεται ως είσοδο την ακολουθία λεκτικών μονάδων που παράγονται κατά τη λεκτική ανάλυση και προσπαθεί να ανιχνεύσει τη δομή του προγράμματος κάνοντας χρήση συντακτικών κανόνων. Παράγει μία δομή που ονομάζεται συντακτικό δένδρο. Έκφραση Έκφραση Εκχώρησης τιμής Όνομα sum = + Αριθμός 2 a * ΕΑΠ – ΠΛΗ24
5
Σημασιολογική ανάλυση
Καθορίζει την στατική και δυναμική συμπεριφορά του πηγαίου προγράμματος κατά την εκτέλεση. Έκφραση Έκφραση Εκχώρησης τιμής Όνομα sum integer = + Αριθμός 2 a * ΕΑΠ – ΠΛΗ24
6
Παραγωγή Ενδιάμεσου Κώδικα / Βελτιστοποίηση
Μετά την σημασιολογική ανάλυση, μπορεί να παραχθεί μία γραμμική αναπαράσταση του συντακτικού δένδρου, γνωστή με τον όρο κώδικας τριών διευθύνσεων. Το παραγόμενο δένδρο και ο κώδικας τριών διευθύνσεων είναι εναλλακτικές μορφές ενδιάμεσου κώδικα . Περιπτώσεις βελτιστοποιήσεων: σύμπτυξη σταθερών π.χ. i*1 => i ή i*0 => 0 διάδοση εντολών εκχώρησης τιμής στο υπόλοιπο πρόγραμμα. π.χ. i = 5 και j = i + k => j = 5 + k απομάκρυνση των μη προσιτών τμημάτων κώδικα π.χ. i=5 και if (i<3) print (“Test”); => i=5 μετακίνηση κώδικα έξω από βρόχους επανάληψης π.χ. for(i=0;i<5;i++) { j++;k=j;} => for(i=0;i<5;i++) { j++;} k=j; ΕΑΠ – ΠΛΗ24
7
Σύνθεση τελικού προγράμματος / Βελτιστοποίηση
H ενδιάμεση αναπαράσταση του πηγαίου προγράμματος απεικονίζεται με συστηματικό τρόπο στο ρεπερτόριο εντολών της γλώσσας-στόχο. Ο τελικός κώδικας μπορεί να δημιουργηθεί για ένα συγκεκριμένο επεξεργαστή ή για κάποια ιδεατή μηχανή με χαρακτηριστικά συμβατικού επεξεργαστή. Οι δυνατότητες βελτίωσης του παραγόμενου κώδικα εξαρτώνται από τον επεξεργαστή, για τον οποίο δημιουργείται το τελικό πρόγραμμα. Πλήθος και εξειδίκευση των καταχωρητών του επεξεργαστή Μορφές προσπέλασης μνήμης Σύνθετες εντολές ελέγχου ροής Παράλληλη επεξεργασία ΕΑΠ – ΠΛΗ24
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.