210 likes | 286 Views
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης. Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Πέμπτο Η συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Καθηγητής: Α. Βαφειάδης 2004. Πλεονεκτήματα της συμβολικής γλώσσας μηχανής.
E N D
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Πέμπτο Η συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Καθηγητής: Α. Βαφειάδης 2004
Πλεονεκτήματα της συμβολικής γλώσσας μηχανής • Δουλεύουμε με σύμβολα και όχι με αριθμούς. Οι διευθύνσεις της μνήμης είναι σύμβολα και όχι αριθμοί. Π.χ LDA LABEL,0(0:5) • Μας δίνει τη δυνατότητα να παραλείψουμε ορισμένες τιμές στα πεδία Ι και F, οι οποίες επαναλαμβάνονται συνεχώς.(Default values) • Οι αριθμητικές τιμές που εκ των πραγμάτων αναγκαζόμαστε να έχουμε στο πρόγραμμα (σταθερές κ.λ.π) είναι στο δεκαδικό και όχι στο οκταδικό σύστημα. Η μετατροπή γίνεται από τον συμβολομεταφραστή στη φάση της μετάφρασης.
Κατηγορίες εντολών συμβολικής Γλώσσας Μηχανής • Ψευδοεντολές (pseudo instructions) με τις οποίες ορίζουμε ουσιαστικά της μεταβλητές και τις σταθερές του προγράμματος, δηλαδή αντιστοιχίζουμε σε συμβολικά ονόματα, διευθύνσεις μνήμης (μεταβλητές) ή αριθμητικές τιμές (σταθερές). • Εκτελέσιμεςεντολές (instructions) με τις οποίες συντάσσεται η λογική του προγράμματος. Κάθε εντολή ή ψευδοεντολή περιγράφεται σε μόνο μια γραμμή. • Σχόλια
Περιγραφή εντολής Ετικέτα όνομα εντολής Διεύθυνση παράγοντα σχόλια ή Παράγοντας εντολής Συμβολική διεύθυνση ή σταθερά, Δείκτης (F-πεδίο)
Δεσμευμένη σύνταξη εντολών(fixed format) 1 10 12 15 17 36 38 ----------------+-+------+---+---------------------------+-+----------------------------------------------- LDA FOR,2(1:5) rA<-- MEM[FOR + REG[2]](1:5) LDA FOR Φόρτωσε στον rA το περιεχόμενο * της διεύθυνσης FOR. LOOP LDA FOR (1:5) Φόρτωσε στον rA την απόλυτη τιμή * τηςδιεύθυνσης FOR. LDA FOR,1 rA <-- MEM[FOR + REG[1]] * ENT1 14 rI1 <-- 14 (ΑΡΧΙΚΗ ΤΙΜΗ). ANT DEC1 1 Αφαίρεσε 1 από τον rI1. J1P ANT Αν το περιεχόμενο του rI1 είναι * θετικό πήγαινε στην εντολή με * συμβολική διεύθυνση ANT HLT Σταμάτησε το πρόγραμμα.
Δομές δεδομένων συμβολομεταφραστή • Ο πίνακας των συμβολικών ονομάτων των εντολών (opcode table) • Ο πίνακας των συμβολικών ονομάτων που ορίζει ο προγραμματιστής και ο οποίος ονομάζεται συμβολικός πίνακας(symbol table) • Μια μεταβλητή που ονομάζεται μετρητής θέσης(location counter).
Δομές δεδομένων συμβολομεταφραστή. Συμβολικός Πίνακας Εντολών Συμβολικός Πίνακας Μετρητής θέσης 0043
Κατηγορίες συμβολομεταφραστών • Ενός περάσματος (one pass assembler) • Ανάγνωση μιας εντολής από το αρχείο εισόδου • Τοποθέτηση ενός συμβολικού(αν υπάρχει) ονόματος στον συμβολικό πίνακα • Μετάφραση της εντολής σε αριθμητική μορφή • τοποθέτηση της μεταφρασμένες εντολής στη μνήμη ή σε αρχείο(object file). • Δύο περασμάτων (two pass assembler) • Ο assembler διαβάζει εντολή προς εντολή το αρχείο εισόδου και σχηματίζει τον συμβολικό πίνακα. • Ο assembler ξαναδιαβάζει το πρόγραμμα και με τη βοήθεια του συμπληρωμένου συμβολικού πίνακα κατασκευάζει τον αριθμητικό κώδικα. • τοποθέτηση της μεταφρασμένες εντολής σε αρχείο(object file).
Σύνταξη συμβολικού ονόματος • Συμβολικό όνομα • Συμβολική διεύθυνση(όνομα μεταβλητής) • Όνομα σταθεράς • Ετικέτα εντολής(label) • Κανόνες σύνταξης συμβολικού ονόματος • Δεν περεχεί ειδικά σύμβολα (μόνο γράμματα και αριθμούς) • Μέχρι 10 χαρακτήρες • Τουλάχιστον ένα χαρακτήρα Στη θέση του της συμβολικής διεύθυνση μπορεί να έχουμε: • συμβολικό όνομα. • αριθμητική σταθερά (στο δεκαδικό σύστημα) • αστερίσκο (*). • συμβολική αριθμητική έκφραση.
Συνοπτική Περιγραφή Ψευδοεντολών • ORIG Δίνει τιμές στο μετρητή θέσης • CON Ορίζει αριθμητική μεταβλητή • ALF Ορίζει μεταβλητή χαρακτήρων • EQU Ορίζει σταθερά • END Η τελευταία εντολή του πηγαίου κώδικά
Λειτουργία του μετρητή θέσης(location counter) Ο μετρητής θέσης είναι μια ειδική μεταβλητή του assembler, ο οποίος (μετρητής) περιέχει την διεύθυνση της θέσης μνήμης στην οποία θα τοποθετηθεί η τρέχουσα εντολή ή μεταβλητή όταν αυτή φορτωθεί στη μνήμη • Ο location Counter • σε κάθε εκτελέσιμή εντολή αυξάνει κατά ένα • σε κάθε ψευδοεντολή EQU η τιμή του παραμένει σταθερή • σε κάθε ψευδοεντολή CON ή ALF αυξάνει κατά ένα • σε κάθε ψευδοεντολή ORIG μεταβάλλεται με βάση την αριθμητική παράσταση που βρίσκεται στην θέση του παράγοντα της ψευδοεντολής
Εκτελέσιμη εντολή (Ενέργειες assembler) Πρώτο πέρασμα: Β1: Αν δεν υπάρχει ετικέτα πήγαινε στο βήμα Β3. Β2: Τοποθέτησε την ετικέτα στη μία στήλη του συμβολικού πίνακα και στην άλλη βάλε τη τρέχουσα τιμή του μετρητή θέσης. Β3: Αύξησε κατά ένα τη τιμή του μετρητή θέσης Β4: Τοποθέτησε την εντολή μαζί με τη διεύθυνση που θα φορτωθεί στη μνήμη, στο ενδιάμεσο αρχείο Δεύτερο πέρασμα: Β1: Μετάφραση της εντολής σε δυαδικό κώδικα με τη βοήθεια του συμβολικού πίνακα ονομάτων (πρώτο πέρασμα) και του συμβολικού πίνακα εντολών (κατασκευαστής) Β2: Δημιούργησε στο αρχείο εξόδου (object file) μια εγγραφή που θα αντιστοιχεί σε μια θέση μνήμης κατά τη φόρτωση του προγράμματος, με διεύθυνση τη διεύθυνση της εντολής που βρέθηκε κατά το πέρασμα ένα και περιεχόμενο τη μεταφρασμένη εντολή. Β3: Εκτύπωση της εντολής με τα συντακτικά λάθη (αν υπάρχουν).
Παράδειγμα συμβολομετάφρασης 1/3 Πηγαίος κώδικας Q CON 10 P CON 0 C EQU 8 BEGIN ENTA C ADD Q STA P HLT END BEGIN ΠΡΩΤΟ ΠΕΡΑΣΜΑ Σύμβολο Τιμή Q 0 Συμβολικός πίνακας P 1 C 10 BEGIN 2 0000:Q CON 10 0001: P CON 0 0002: C EQU 8 0002: BEGIN ENTA C 0003: ADD Q 0004: STA P0005:HLT END BEGIN
Ενδιάμεσο Αρχείο 0000: Q CON 10 0001: P CON 0 0002: C EQU 8 0002: BEGIN ENTA C 0003: ADD Q 0004: STA P 0005: HLT END BEGIN ΔΕΥΤΕΡΟ ΠΕΡΑΣΜΑ Εκτελέσιμο αρχείο 0000: 00000000012Δεδομένα 0001: 00000000000 0002: 00010000260 Κώδικας 0003: 00000000501 0004: 00001000530 0005: 00000000205 0002: 00000000000 StartingAddress Εικόνα Μνήμης 0000:00000000012 Q 0001: 00000000000 P 0002: 00010000260 BEGIN 0003: 00000000501 0004: 00001000530 0005: 00000000205
Παράδειγμα συμβολομετάφρασης 2/3 Πηγαίος κώδικας ORIG 4 Q CON 10 P CON 0 C EQU 8 BEGIN ENTA C ADD Q STA P HLT END BEGIN ΠΡΩΤΟ ΠΕΡΑΣΜΑ Σύμβολο Τιμή Q4Συμβολικός πίνακας P5 C 10 BEGIN 6
Ενδιάμεσο Αρχείο 0000:ORIG 4 0004: Q CON 10 0005: P CON 0 0006: C EQU 8 0006: BEGIN ENTA C 0007: ADD Q 0010: STA P 0011: HLT END BEGIN ΔΕΥΤΕΡΟ ΠΕΡΑΣΜΑ Εκτελέσιμο αρχείο 0004: 00000000012Δεδομένα 0005: 00000000000 0006: 00010000260 Κώδικας 0007: 00004000501 0010: 00005000530 0011: 00000000205 0006: 00000000000 StartingAddress Εικόνα Μνήμης 0004:00000000012 Q 0005: 00000000000 P 0006: 00010000260 BEGIN 0007: 00004000501 0011: 00005000530 0012: 00000000205
Παράδειγμα συμβολομετάφρασης 3/3 Πηγαίος κώδικας ORIG 4 Q CON 10 P CON 0 C EQU 8 ORIG *+3 BEGIN ENTA C ADD Q STA P HLT END BEGIN ΠΡΩΤΟ ΠΕΡΑΣΜΑ Σύμβολο Τιμή Q4Συμβολικός πίνακας P5 C 10 BEGIN 11
Ενδιάμεσο Αρχείο 0000:ORIG 4 0004: Q CON 10 0005: P CON 0 0006: C EQU 8 0006: ORIG *+3 0011: BEGIN ENTA C 0012: ADD Q 0013: STA P 0014: HLT END BEGIN ΔΕΥΤΕΡΟ ΠΕΡΑΣΜΑ Εκτελέσιμο αρχείο 0004: 00000000012Δεδομένα 0005: 00000000000 0011: 00010000260 Κώδικας 0012: 00004000501 0013: 00005000530 0014: 00000000205 0011: 00000000000 StartingAddress Εικόνα Μνήμης 0004:00000000012 Q 0005: 00000000000 P 0006: 0007: 0010: 0011: 00010000260 BEGIN 0012: 00004000501 0013: 00005000530 0014: 00000000205