Παράλληλη Αναζήτηση

Αναζήτηση

Βρες
Εμφάνιση

Αθλητικά :: Αθλητική είδηση

( το φιλμ του αγωνα :: 1/3/2006 22:40:44) 

ΤΟ ΦΙΛΜ ΤΟΥ ΑΓΩΝΑ

ΒΟΥΛΙΑΓΜΕΝΗ

Δομή του μεταγλωττιστή

Γονάτισαν οι Πολωνοί

«Φύλλο πορείας» για ευρωστρατό

Ένας μεταγλωττιστής γενικά αποτελείται από δύο μέρη: το ένα τμήμα είναι αφιερωμένο στην αναγνώριση και ανάλυση του προγράμματος στη γλώσσα υψηλού επιπέδου και το άλλο αναλαμβάνει την παραγωγή της συμβολικής γλώσσας και της γλώσσας μηχανής.

Απέναντι σε τέτοιο Ηρακλή, η Σκρα δεν είχε καμία ελπίδα…

Την τελευταία σφραγίδα στο «φύλλο πορείας» της πρώτης αποστολής του ευρωστρατού έβαλε η ελληνική προεδρία στην άτυπη Σύνοδο των υπουργών Άμυνας της Βουλιαγμένης. Το τμήμα που κάνει την αναγνώριση της γλώσσας προγραμματισμού δεν εξαρτάται από τον υπολογιστή στον οποίο θα εκτελεστεί αλλά μόνο από τη γλώσσα προγραμματισμού.

Οι Πολωνοί ξεκίνησαν με καλό μπλοκ και το πρώτο σετ προμήνυε ντέρμπι, αφού προηγήθηκαν 18-19 με σερί 0-5, αλλά το κομβικό σημείο ήταν η είσοδος του τραυματία Στάνλεϊ στο 22-22.

Η δύναμη θα εγκατασταθεί στα Σκόπια όπως διαβεβαίωσαν ο υπουργός Άμυνας και προεδρεύων της Συνόδου κ. Γ. Παπαντωνίου και ο ύπατος αρμοστής της Ε.Ε. για θέματα Εξωτερικών και Άμυνας κ. Χ. Σολάνα. Αντίστοιχα, το τμήμα που κάνει την παραγωγή της γλώσσας μηχανής δεν εξαρτάται από τη γλώσσα προγραμματισμού αλλά μόνο από το ρεπερτόριο εντολών μηχανής που παράγει.

Ο Αμερικανός "καθάρισε" με τα σερβίς του και η ψυχολογία των "κυανόλευκων" ανέβηκε κατακόρυφα.

«Θα είναι μια σημαντική στιγμή για την ευρωπαϊκή άμυνα και την ευρωπαϊκή ενοποίηση» είπε ο κ. Γ. Παπαντωνίου. Αυτό δίνει τη δυνατότητα στους κατασκευαστές των μεταγλωττιστών να κατασκευάζουν ανεξάρτητα τα δύο τμήματα, και να τα συνδυάζουν όπως χρειάζεται.

Από εκείνο το σημείο, ο Ηρακλής έμοιαζε με ελβετικό ρολόι, με τον Κράβαρικ να είναι εντυπωσιακός και το Χοφ να κάνει πολλή "αθόρυβη" δουλειά, οδηγώντας τους φιλοξενούμενους σε αλλεπάλληλα λάθη και στην παράδοση άνευ όρων. Η Σύνοδος έδωσε την ευκαιρία να επιβεβαιωθούν τα «σημαντικά βήματα» που έγιναν επί ελληνικής προεδρίας για την επιχειρησιακή ολοκλήρωση και λειτουργία του ευρωστρατού μέχρι τον Μάιο. Μία εταιρία λογισμικού που κατασκευάζει μεταγλωττιστές μπορεί να σχεδιάζει και να υλοποιεί τα τμήματα των μεταγλωττιστών ανεξάρτητα το ένα από το άλλο, και μετά να τα συνδυάζει.

Τα σετ: 25-22, 25-19, 25-17.

Μια κίνηση που θα κλείσει τυπικώς στη Σύνοδο Κορυφής της Θεσσαλονίκης, όπου ο Πρωθυπουργός κ. Κ. Σημίτης θα αναγγείλει επισήμως τη συγκρότηση του ευρωστρατού. Αν οι γλώσσες με τις οποίες ασχολείται είναι η Pascal, η C++ και η Ada, ενώ οι αρχιτεκτονικές επεξεργαστών για τους οποίους παράγονται τα προγράμματα είναι ο Sparc της Sun, ο Pentium της Intel και ο Alpha της DEC, τότε μπορεί να κατασκευάσει τρία τμήματα για τις γλώσσες προγραμματισμού και άλλα τρία για τις αρχιτεκτονικές.

Ηρακλής (Λεώνης): Μπολ 3,5 (1), Γκιούρδας 8,5 (1), Κράβαρικ 16 (3), Χοφ 13 (1), Τσέρνιτς 8 (1), Ντίας 7 (Δημητρακόπουλος -λ 55%, Στάνλεϊ 1 (1), Ιωαννίδης, Μπρουκς).

Ήδη τα όπλα που λείπουν καταγράφηκαν και δρομολογείται η προμήθειά τους, παράλληλα με την προώθηση της συνεργασίας των αμυντικών βιομηχανιών για τη δημιουργία «κοινής αγοράς» όπλων στην Ευρώπη. Συνδυάζοντας τα έξι τμήματα αυτά μεταξύ τους έχει έτοιμους εννέα μεταγλωττιστές.

Σκρα Μπελχατόβ (Μαζούρ): Βλάζλι 14, Κ. Στέλμαχ 4, Α. Στέλμαχ 3, Βινιάρσκι 10,5 (1), Γνουκ 4,5, Σάρμπανιουκ 4 (Ίγκνατσακ -λ 56%, Ματσιέζεβιτς 1 (1), Κικτίεφ 1 (1), Ντομπροβόλσκι).

Το πρώτο τμήμα του μεταγλωττιστή εκτελεί τρεις λειτουργίες: τη λεκτική, τη συντακτική και τη σημασιολογική ανάλυση του προγράμματος. Από τις λειτουργίες αυτές προκύπτει μία αναπαράσταση του προγράμματος η οποία δεν εξαρτάται από τη γλώσσα προγραμματισμού. Την αναπαράσταση αυτή χρησιμοποιεί το δεύτερο μέρος του μεταγλωττιστή, που επιτελεί την παραγωγή κώδικα μηχανής (ή συμβολικής γλώσσας) και τη βελτιστοποίησή του.

Στη λεκτική ανάλυση (lexical analysis) του προγράμματος, ο μεταγλωττιστής το χωρίζει στις βασικές του μονάδες: τις λέξεις, τα σύμβολα, τους αριθμούς κλπ. Τα διαστήματα που διαχωρίζουν τις μονάδες του προγράμματος αφαιρούνται, και το αποτέλεσμα είναι μία σειρά από μονάδες του προγράμματος (tokens).

Σε ένα πρόγραμμα Pascal εμφανίζονται οι εντολές y: = 5; x:= y+15;

Ο λεκτικός αναλυτής θα χωρίσει αυτό το τμήμα του προγράμματος στην ακολουθία: «αναγνωριστικό όνομα y», «τελεστής ανάθεσης», «αριθμητική σταθερά 5», «ερωτηματικό», «αναγνωριστικό όνομα x», «τελεστής ανάθεσης», «αναγνωριστικό όνομα y», «τελεστής συν», «αριθμητική σταθερά 15», «ερωτηματικό».

Στη συντακτική ανάλυση (syntax analysis) του προγράμματος, ελέγχεται κατά πόσο αυτό ακολουθεί τους συντακτικούς κανόνες της γλώσσας προγραμματισμού, και μετασχηματίζεται σε κάποια ενδιάμεση αναπαράσταση, την ενδιάμεση γλώσσα (intermediate language), η οποία δεν εξαρτάται από τη γλώσσα προγραμματισμού.

Στη γλώσσα Pascal οι εντολές χωρίζονται μεταξύ τους με ερωτηματικό («;»). Ο συντακτικός αναλυτής θα διαπιστώσει το λάθος και θα ενημερώσει τον προγραμματιστή αν έχει κατά λάθος γράψει τις παραπάνω εντολές σαν: y:= 5 x:= y+15; όπου λείπει ένα ερωτηματικό μεταξύ των εντολών.

Παράλληλα με τη συντακτική, γίνεται και η σημασιολογική ανάλυση (semantic analysis).

Αν ο προγραμματιστής γράψει σε ένα πρόγραμμα Pascal: γ := 5 + "abcde"; ο σημασιολογικός αναλυτής θα διαπιστώσει την εσφαλμένη πρόσθεση μεταξύ ενός αριθμού και ενός κειμένου, και θα ενημερώσει τον προγραμματιστή για αυτό.

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

Για τις δύο εντολές Pascal που είδαμε, ένας μεταγλωττιστής για τον Άβακα πρέπει να αποφασίσει πού στη μνήμη θα κρατούνται οι δύο σταθερές 5 και 15 και οι δύο μεταβλητές χ και y. Αν οι σταθερές τοποθετούνται σε θέσεις μνήμης με συμβολικά ονόματα C5 και C15 αντίστοιχα, και οι δύο μεταβλητές τοποθετούνται σε θέσεις μνήμης με τα συμβολικά ονόματα Χ και Υ, τότε το πρόγραμμα σε συμβολική γλώσσα που θα παραγάγει ο μεταγλωττιστής είναι: [pic]

Οι πληροφορίες για τη θέση των μεταβλητών και των σταθερών κρατούνται από το μεταγλωττιστή στον πίνακα συμβόλων (symbol table).

Ο πίνακας συμβόλων για το παράδειγμά μας είναι:

Συμβολική διεύθυνση - Σχετική διεύθυνση - Αρχικό περιεχόμενο C5 - 0 - 0000000000000101 C15 - 1 - 0000000000001111 Υ - 2 - 0000000000000000 Χ - 3 - 0000000000000000

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

Το πρόγραμμα του παραδείγματός μας, με τη δεύτερη εντολή του αποθηκεύει το περιεχόμενο του συσσωρευτή στη θέση μνήμης με ετικέτα Υ και αμέσως μετά αντιγράφει πάλι το περιεχόμενο της θέσης μνήμης Υ στο συσσωρευτή. Η δεύτερη αντιγραφή είναι περιττή, αφού η θέση μνήμης Υ και ο συσσωρευτής έχουν το ίδιο περιεχόμενο. Κατά τη βελτιστοποίηση του κώδικα, η δεύτερη εντολή θα παραλειφθεί, και το πρόγραμμα θα γίνει τελικά: [pic]

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

Τελικά, το πρόγραμμα σε γλώσσα μηχανής είναι:

Διεύθυνση - Περιεχόμενο 000000000000 - 0001000000000101 000000000001 - 0010000000001000 000000000010 - 0011000000000110 000000000011 - 0010000000000111 000000000100 - 0000000000000000 000000000101 - 0000000000000101 000000000110 - 0000000000001111 000000000111 - 0000000000000000 000000001000 - 0000000000000000