1 / 21

Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης

Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης. Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Πέμπτο Η συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Καθηγητής: Α. Βαφειάδης 2004. Πλεονεκτήματα της συμβολικής γλώσσας μηχανής.

Download Presentation

Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφαλαίο Πέμπτο Η συμβολική γλώσσα μηχανής του ΜΙΧ 1009 Καθηγητής: Α. Βαφειάδης 2004

  2. Πλεονεκτήματα της συμβολικής γλώσσας μηχανής • Δουλεύουμε με σύμβολα και όχι με αριθμούς. Οι διευθύνσεις της μνήμης είναι σύμβολα και όχι αριθμοί. Π.χ LDA LABEL,0(0:5) • Μας δίνει τη δυνατότητα να παραλείψουμε ορισμένες τιμές στα πεδία Ι και F, οι οποίες επαναλαμβάνονται συνεχώς.(Default values) • Οι αριθμητικές τιμές που εκ των πραγμάτων αναγκαζόμαστε να έχουμε στο πρόγραμμα (σταθερές κ.λ.π) είναι στο δεκαδικό και όχι στο οκταδικό σύστημα. Η μετατροπή γίνεται από τον συμβολομεταφραστή στη φάση της μετάφρασης.

  3. Κατηγορίες εντολών συμβολικής Γλώσσας Μηχανής • Ψευδοεντολές (pseudo instructions) με τις οποίες ορίζουμε ουσιαστικά της μεταβλητές και τις σταθερές του προγράμματος, δηλαδή αντιστοιχίζουμε σε συμβολικά ονόματα, διευθύνσεις μνήμης (μεταβλητές) ή αριθμητικές τιμές (σταθερές). • Εκτελέσιμεςεντολές (instructions) με τις οποίες συντάσσεται η λογική του προγράμματος. Κάθε εντολή ή ψευδοεντολή περιγράφεται σε μόνο μια γραμμή. • Σχόλια

  4. Περιγραφή εντολής Ετικέτα όνομα εντολής Διεύθυνση παράγοντα σχόλια ή Παράγοντας εντολής Συμβολική διεύθυνση ή σταθερά, Δείκτης (F-πεδίο)

  5. Δεσμευμένη σύνταξη εντολών(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 Σταμάτησε το πρόγραμμα.

  6. Δομές δεδομένων συμβολομεταφραστή • Ο πίνακας των συμβολικών ονομάτων των εντολών (opcode table) • Ο πίνακας των συμβολικών ονομάτων που ορίζει ο προγραμματιστής και ο οποίος ονομάζεται συμβολικός πίνακας(symbol table) • Μια μεταβλητή που ονομάζεται μετρητής θέσης(location counter).

  7. Δομές δεδομένων συμβολομεταφραστή. Συμβολικός Πίνακας Εντολών Συμβολικός Πίνακας Μετρητής θέσης 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 ΠΡΩΤΟ ΠΕΡΑΣΜΑ Σύμβολο Τιμή 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

  17. Ενδιάμεσο Αρχείο 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

  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 C 10 BEGIN 6

  19. Ενδιάμεσο Αρχείο 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

  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 C 10 BEGIN 11

  21. Ενδιάμεσο Αρχείο 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

More Related