1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Πέμπτο Η συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Καθηγητής: Α. Βαφειάδης 2004
2 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πλεονεκτήματα της συμβολικής γλώσσας μηχανής Δουλεύουμε με σύμβολα και όχι με αριθμούς. Οι διευθύνσεις της μνήμης είναι σύμβολα και όχι αριθμοί. Π.χ LDA LABEL,0(0:5) Μας δίνει τη δυνατότητα να παραλείψουμε ορισμένες τιμές στα πεδία Ι και F, οι οποίες επαναλαμβάνονται συνεχώς.(Default values) Οι αριθμητικές τιμές που εκ των πραγμάτων αναγκαζόμαστε να έχουμε στο πρόγραμμα (σταθερές κ.λ.π) είναι στο δεκαδικό και όχι στο οκταδικό σύστημα. Η μετατροπή γίνεται από τον συμβολομεταφραστή στη φάση της μετάφρασης.
3 Οργάνωση και Αρχιτεκτονική Υπολογιστών Κατηγορίες εντολών συμβολικής Γλώσσας Μηχανής Ψευδοεντολές (pseudo instructions) με τις οποίες ορίζουμε ουσιαστικά της μεταβλητές και τις σταθερές του προγράμματος, δηλαδή αντιστοιχίζουμε σε συμβολικά ονόματα, διευθύνσεις μνήμης (μεταβλητές) ή αριθμητικές τιμές (σταθερές). Εκτελέσιμες εντολές (instructions) με τις οποίες συντάσσεται η λογική του προγράμματος. Κάθε εντολή ή ψευδοεντολή περιγράφεται σε μόνο μια γραμμή. Σχόλια
4 Οργάνωση και Αρχιτεκτονική Υπολογιστών Περιγραφή εντολής Ετικέτα όνομα εντολής Διεύθυνση παράγοντα σχόλια ή Παράγοντας εντολής Συμβολική διεύθυνση ή σταθερά, Δείκτης (F-πεδίο)
5 Οργάνωση και Αρχιτεκτονική Υπολογιστών Δεσμευμένη σύνταξη εντολών(fixed format) 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 Σταμάτησε το πρόγραμμα.
6 Οργάνωση και Αρχιτεκτονική Υπολογιστών Δομές δεδομένων συμβολομεταφραστή Ο πίνακας των συμβολικών ονομάτων των εντολών (opcode table) Ο πίνακας των συμβολικών ονομάτων που ορίζει ο προγραμματιστής και ο οποίος ονομάζεται συμβολικός πίνακας(symbol table) Μια μεταβλητή που ονομάζεται μετρητής θέσης(location counter).
7 Οργάνωση και Αρχιτεκτονική Υπολογιστών Δομές δεδομένων συμβολομεταφραστή. Συμβολικό όνομα Τιμή (Διεύθυνση ή σταθερά) ΧΥΧ ΧΥΧ0437 ΑΝΤ1 ΑΝΤ10003 Α-7 Β23 LOOP2002 ANT ANT1631 LP LP18 Συμβολικό όνομα CF-πεδίο LDA LDA10(L:R) ST1 ST131(L:R) ADD ADD01(L:R) FADD0106 CMPA 70(L:R) JMP JMP4700 JSJ JSJ4701 JOV4702 ΙΝ N OUT N Συμβολικός Πίνακας Εντολών Συμβολικός Πίνακας Μετρητής θέσης 0043
8 Οργάνωση και Αρχιτεκτονική Υπολογιστών Κατηγορίες συμβολομεταφραστών Ενός περάσματος (one pass assembler) Ανάγνωση μιας εντολής από το αρχείο εισόδου Τοποθέτηση ενός συμβολικού(αν υπάρχει) ονόματος στον συμβολικό πίνακα Μετάφραση της εντολής σε αριθμητική μορφή τοποθέτηση της μεταφρασμένες εντολής στη μνήμη ή σε αρχείο(object file). Δύο περασμάτων (two pass assembler) Ο assembler διαβάζει εντολή προς εντολή το αρχείο εισόδου και σχηματίζει τον συμβολικό πίνακα. Ο assembler ξαναδιαβάζει το πρόγραμμα και με τη βοήθεια του συμπληρωμένου συμβολικού πίνακα κατασκευάζει τον αριθμητικό κώδικα. τοποθέτηση της μεταφρασμένες εντολής σε αρχείο(object file).
9 Οργάνωση και Αρχιτεκτονική Υπολογιστών Σύνταξη συμβολικού ονόματος Συμβολικό όνομα Συμβολική διεύθυνση(όνομα μεταβλητής) Όνομα σταθεράς Ετικέτα εντολής(label) Κανόνες σύνταξης συμβολικού ονόματος Δεν περεχεί ειδικά σύμβολα (μόνο γράμματα και αριθμούς) Μέχρι 10 χαρακτήρες Τουλάχιστον ένα χαρακτήρα Στη θέση του της συμβολικής διεύθυνση μπορεί να έχουμε: συμβολικό όνομα. αριθμητική σταθερά (στο δεκαδικό σύστημα) αστερίσκο (*). συμβολική αριθμητική έκφραση.
10 Οργάνωση και Αρχιτεκτονική Υπολογιστών Ο Assembler δύο περασμάτων του ΜΙΧ
11 Οργάνωση και Αρχιτεκτονική Υπολογιστών Συνοπτική Περιγραφή Ψευδοεντολών ORIG Δίνει τιμές στο μετρητή θέσης CON Ορίζει αριθμητική μεταβλητή ALF Ορίζει μεταβλητή χαρακτήρων EQU Ορίζει σταθερά END Η τελευταία εντολή του πηγαίου κώδικά
12 Οργάνωση και Αρχιτεκτονική Υπολογιστών Λειτουργία του μετρητή θέσης(location counter) Ο μετρητής θέσης είναι μια ειδική μεταβλητή του assembler, ο οποίος (μετρητής) περιέχει την διεύθυνση της θέσης μνήμης στην οποία θα τοποθετηθεί η τρέχουσα εντολή ή μεταβλητή όταν αυτή φορτωθεί στη μνήμη Ο location Counter σε κάθε εκτελέσιμή εντολή αυξάνει κατά ένα σε κάθε ψευδοεντολή EQU η τιμή του παραμένει σταθερή σε κάθε ψευδοεντολή CON ή ALF αυξάνει κατά ένα σε κάθε ψευδοεντολή ORIG μεταβάλλεται με βάση την αριθμητική παράσταση που βρίσκεται στην θέση του παράγοντα της ψευδοεντολής
13 Οργάνωση και Αρχιτεκτονική Υπολογιστών Εκτελέσιμη εντολή (Ενέργειες assembler) Πρώτο πέρασμα: Β1: Αν δεν υπάρχει ετικέτα πήγαινε στο βήμα Β3. Β2: Τοποθέτησε την ετικέτα στη μία στήλη του συμβολικού πίνακα και στην άλλη βάλε τη τρέχουσα τιμή του μετρητή θέσης. Β3: Αύξησε κατά ένα τη τιμή του μετρητή θέσης Β4: Τοποθέτησε την εντολή μαζί με τη διεύθυνση που θα φορτωθεί στη μνήμη, στο ενδιάμεσο αρχείο Δεύτερο πέρασμα: Β1: Μετάφραση της εντολής σε δυαδικό κώδικα με τη βοήθεια του συμβολικού πίνακα ονομάτων (πρώτο πέρασμα) και του συμβολικού πίνακα εντολών (κατασκευαστής) Β2: Δημιούργησε στο αρχείο εξόδου (object file) μια εγγραφή που θα αντιστοιχεί σε μια θέση μνήμης κατά τη φόρτωση του προγράμματος, με διεύθυνση τη διεύθυνση της εντολής που βρέθηκε κατά το πέρασμα ένα και περιεχόμενο τη μεταφρασμένη εντολή. Β3: Εκτύπωση της εντολής με τα συντακτικά λάθη (αν υπάρχουν).
14 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρώτο πέρασμα
15 Οργάνωση και Αρχιτεκτονική Υπολογιστών Δεύτερο πέρασμα
16 Οργάνωση και Αρχιτεκτονική Υπολογιστών Παράδειγμα συμβολομετάφρασης 1/3 Πηγαίος κώδικας Q CON 10 P CON 0 C EQU 8 BEGIN ENTA C ADD Q STA P HLT END BEGIN ΠΡΩΤΟ ΠΕΡΑΣΜΑ Σύμβολο Τιμή Q0 Συμβολικός πίνακας P1 C10 BEGIN2 0000: Q CON :P CON : C EQU :BEGIN ENTA C 0003:ADD Q 0004:STA P 0005: HLT END BEGIN
17 Οργάνωση και Αρχιτεκτονική Υπολογιστών Ενδιάμεσο Αρχείο 0000:Q CON :P CON :C EQU :BEGIN ENTA C 0003:ADD Q 0004:STA P 0005:HLT END BEGIN ΔΕΥΤΕΡΟ ΠΕΡΑΣΜΑ Εκτελέσιμο αρχείο 0000: Δεδομένα 0001: : Κώδικας 0003: : : : Starting Address 0000: Q 0001: P 0002: BEGIN 0003: : : Εικόνα Μνήμης
18 Οργάνωση και Αρχιτεκτονική Υπολογιστών Παράδειγμα συμβολομετάφρασης 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 C10 BEGIN6
19 Οργάνωση και Αρχιτεκτονική Υπολογιστών Ενδιάμεσο Αρχείο 0000:ORIG :Q CON :P CON :C EQU :BEGIN ENTA C 0007:ADD Q 0010:STA P 0011:HLT END BEGIN ΔΕΥΤΕΡΟ ΠΕΡΑΣΜΑ Εκτελέσιμο αρχείο 0004: Δεδομένα 0005: : Κώδικας 0007: : : : Starting Address 0004: Q 0005: P 0006: BEGIN 0007: : : Εικόνα Μνήμης
20 Οργάνωση και Αρχιτεκτονική Υπολογιστών Παράδειγμα συμβολομετάφρασης 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 C10 BEGIN11
21 Οργάνωση και Αρχιτεκτονική Υπολογιστών Ενδιάμεσο Αρχείο 0000:ORIG :Q CON :P CON :C EQU :ORIG * :BEGIN ENTA C 0012:ADD Q 0013:STA P 0014:HLT END BEGIN ΔΕΥΤΕΡΟ ΠΕΡΑΣΜΑ Εκτελέσιμο αρχείο 0004: Δεδομένα 0005: : Κώδικας 0012: : : : Starting Address Εικόνα Μνήμης 0004: Q 0005: P 0006: 0007: 0010: 0011: BEGIN 0012: : :