Κεφάλαιο2 | Ενότητα3 | Ερωτήσεις επισκόπησης | Επόμενο | Προηγούμενο | Λεξικό όρων

Τρόποι Διευθυνσιοδότησης

   Οι αρχιτεκτονικές χρησιμοποιούν διάφορους τρόπους διευθυνσιοδότησης, προκειμένου να προσδιορίσουν τη διεύθυνση του «αντικειμένου» στο οποίο θα γίνει προσπέλαση. Για παράδειγμα, ένας τρόπος διευθυνσιοδότησης μπορεί να προσδιορίσει μία σταθερά, έναν καταχωρητή ή μία περιοχή στη μνήμη. Όταν μία περιοχή στη μνήμη χρησιμοποιείται, η πραγματική διεύθυνση μνήμης, καθορισμένη από τον τρόπο διευθυνσιοδότησης, καλείται ενεργή διεύθυνση.

Απευθείας ή κυριολεκτικοί (literal) τρόποι διευθυνσιοδότησης συνήθως θεωρούνται οι τρόποι διευθυνσιοδότησης της μνήμης (παρόλο που η τιμή στην οποία γίνεται προσπέλαση βρίσκεται στον κώδικα των εντολών).
Ο τρόπος διευθυνσιοδότησης που εξαρτάται από τον απαριθμητή προγράμματος (PC) ονομάζεται PC - σχετική διευθυνσιοδότηση. Ο τρόπος αυτός, χρησιμοποιείται κυρίως στον προσδιορισμό διευθύνσεων κώδικα, στις εντολές που ελέγχουν τη ροή εκτέλεσης του προγράμματος.
Στον πίνακα που ακολουθεί (σχήμα 2.3.2), απεικονίζονται τρόποι διευθυνσιοδότησης, η σημασία τους, καθώς και πότε αυτοί χρησιμοποιούνται.

 
Τρόπος Διευθυνσιοδότησης
Παράδειγμα εντολής
Σημασία
Πότε χρησιμοποιείται
Kαταχωρητή
Add R4, R3
Regs[R4]¬ Regs[R4]+ Regs[R3]
Όταν μια τιμή φυλάσσεται σε καταχωρητή
Απευθείας
Add R4, # 3
Regs[R4]¬ Regs[R4] + 3
Για σταθερές
Με μετατόπιση (displacement)
Add R4, 100(R1)
Regs[R4]¬ Regs[R4]+ Mem[100+Regs[R1]]
Πρόσβαση τοπικών μεταβλητών
Έμμεσος καταχωρητή
Add R4, (R1)
Regs[R4]¬ Regs[R4]+ Mem[Regs[R1]]
Πρόσβαση με χρήση δείκτη ή υπολογισμένη διεύθυνση
Με δείκτη 
(indexed)
Add R3, (R1+ R2)
Regs[R3]¬ Regs[R3]+ Mem[Regs[R1]+ Regs[R2]]
Συχνά χρήσιμος σε διευθυνσιοδότηση πινάκων : R1= βάση πίνακα, R2=τιμή δείκτη
Απόλυτος (absolute)
Add R1, (1001)
Regs[R1]¬ Regs[R1]+ Mem[1001]
Συχνά χρήσιμος για πρόσβαση στατικών δεδομένων. Η σταθερά διεύθυνσης ίσως χρειαστεί να γίνει μεγάλη
Έμμεσος μνήμης
Add R1, @(R3)
Regs[R1]¬ Regs[R1]+ Mem[Mem[Regs[R3]]]
Αν R3 είναι διεύθυνση δείκτη p, ο τρόπος διευθυνσιοδότησης παράγει το *p
Αυτοαύξησης 
(autoicrement)
Add R1, (R2)+
Regs[R1]¬ Regs[R1]+ Mem[Regs[R2]]

Regs[R2] ¬ Regs[R2]+d

Χρήσιμος για κίνηση μέσα σε πίνακες μέσα σε βρόχο. O R2 δείχνει την αρχή του πίνακα. Κάθε αναφορά αυξάνει τον R2 κατά ποσότητα d.
Αυτοελάττωσης (autodecrement)
Add R1, -(R2)
Regs[R2] ¬ Regs[R2]-d

Regs[R1]¬ Regs[R1]+ Mem[Regs[R2]]

 

Το ίδιο με την αυτοαύξηση. Αυτοαύξηση/αυτοελάττωση μπορούν ακόμα να χρησιμοποιηθούν σαν push και pop για υλοποίηση στοίβας.
Κλίμακας 
(scaled)
Add

R1,100(R2)[R3]

Regs[R1] ¬ Regs[R1]+ Mem[100+Regs[R2]+ Regs[R3] *d]
Χρησιμοποιείται σε πίνακες με δείκτες. Μπορεί να χρησιμοποιηθεί σαν τρόπο διευθυνσιοδότηση με δείκτη σε μερικούς υπολογιστές

Σχήμα 2.3.2 – Τρόποι διευθυνσιοδότησης, η σημασία τους και που αυτοί χρησιμοποιούνται. Το σύμβολο Mem αναφέρεται στη μνήμη και το Regs στους καταχωρητές. Σε τρόπους διευθυνσιοδότησης αυτοαύξησης, αυτοελάττωσης και κλίμακας, η μεταβλητή d καθορίζει το μέγεθος του τμήματος δεδομένων στο οποίο γίνεται πρόσβαση (αν η εντολή έχει πρόσβαση σε 1,2,4 ή 8 bytes). Αυτό σημαίνει ότι αυτοί οι τρόποι διευθυνσιοδότησης είναι χρήσιμοι μόνο όταν τα στοιχεία στα οποία γίνεται πρόσβαση είναι γειτονικά στη μνήμη.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 5

Ποιος τρόπος διευθυνσιοδότησης χρησιμοποιείται στην παρακάτω εντολή και πόσες προσβάσεις στη μνήμη απαιτούνται; Να αιτιολογήσετε την απάντησή σας.

ADD R1, @ (R2)

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 5


Οι τρόποι διευθυνσιοδότησης έχουν και κάποιες άλλες επιδράσεις :

Μειώνουν σημαντικά τον αριθμό των εντολών.

Συνεισφέρουν στο να γίνει πιο πολύπλοκη η υλοποίηση ενός υπολογιστή

Συχνά αυξάνουν το μέσο CPI των υπολογιστών που χρησιμοποιούν αυτούς τους τρόπους.

   Οι τρόποι διευθυνσιοδότησης Απευθείας και με Μετατόπιση κυριαρχούν μέσα στο σύνολο των εναλλακτικών λύσεων. Ορισμένες ιδιότητες αυτών των ευρέως χρησιμοποιούμενων τρόπων είναι οι εξής :

Τρόπος διευθυνσιοδότησης με Μετατόπιση

    Η επιλογή των μεγεθών των πεδίων μετατόπισης είναι σημαντική επειδή επηρεάζει άμεσα το μήκος εντολής.
 
 

Απευθείας ή Κυριολεκτικός τρόπος διευθυνσιοδότησης

   Οι απευθείας προσβάσεις μπορούν να χρησιμοποιηθούν σε αριθμητικές λειτουργίες, σε συγκρίσεις (κυρίως για διακλαδώσεις) και σε μετακινήσεις στις οποίες μία σταθερά αναζητείται σ' έναν καταχωρητή.
Όπως οι τιμές μετατόπισης, έτσι και το μέγεθος των απευθείας τιμών διευθύνσεων επηρεάζει το μήκος των εντολών. Κατά κύριο λόγο, χρησιμοποιούνται οι άμεσες τιμές που είναι μικρές,. Όμως, οι μεγάλες απευθείας τιμές χρησιμοποιούνται κυρίως για υπολογισμούς διευθυνσιοδότησης.
 

Παραδείγματα

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 6

Να συμπληρώσετε την παρακάτω πρόταση χρησιμοποιώντας μία ή περισσότερες από τις απαντήσεις που ακολουθούν.
Ο τρόπος διευθυνσιοδότησης @-Rn είναι:
Α. Έμμεσος μνήμης
Β. Καταχωρητή
Γ. Δείκτη
Δ. Αυτοαύξησης
Ε. Αυτοελάττωσης

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 6


ΔΡΑΣΤΗΡΙΟΤΗΤΑ 7

* Ποιος τρόπος διευθυνσιοδότησης χρησιμοποιείται στην παρακάτω εντολή;

ADD R1, @(R2)+
* Να εξηγήσετε τον τρόπο με τον οποίο εκτελείται η εντολή αυτή, χρησιμοποιώντας συμβολισμούς.

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 7


ΔΡΑΣΤΗΡΙΟΤΗΤΑ 8

Να απαριθμήσετε τους βασικούς τρόπους διευθυνσιοδότησης και να δώσετε ένα παράδειγμα για κάθε έναν. Να συγκρίνετε την απάντησή σας με τον πίνακα του σχήματος 2.3.2.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 9

Ποια εντολή θα χρησιμοποιήσουμε για να εκτελεστούν οι παρακάτω λειτουργίες και ποιος είναι ο τρόπος διευθυνσιοδότησης σε κάθε περίπτωση; Να εξηγήσετε την εκτέλεση κάθε εντολής χρησιμοποιώντας συμβολισμούς.
α) Πρόσθεση του περιεχομένου του καταχωρητή R1 και του καταχωρητή R2 και τοποθέτηση του αποτελέσματος στον καταχωρητή R2.
β) Πρόσθεση της τιμής 24 στον καταχωρητή R3.
γ) Πρόσθεση του περιεχομένου της θέσης μνήμης με διεύθυνση 251 στον καταχωρητή R4.

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 9


ΔΡΑΣΤΗΡΙΟΤΗΤΑ 10

Έστω ότι ένας πίνακας περιέχει στοιχεία τύπου λέξης με μέγεθος 4 bytes. Τα στοιχεία του πίνακα είναι τοποθετημένα σε συνεχόμενες θέσεις στη μνήμη, η οποία είναι διευθυνσιοδοτημένη κατά byte.
* Να περιγράψετε τη σειρά εντολών που πρέπει να χρησιμοποιηθεί για να γίνει πρόσθεση των δύο πρώτων στοιχείων του πίνακα και το αποτέλεσμα να τοποθετηθεί στον καταχωρητή R1. (Χρησιμοποιήστε μόνο εντολές πρόσθεσης.)
* Να εξηγήσετε την εκτέλεση κάθε εντολής χρησιμοποιώντας συμβολισμούς.
* Ποιο θα είναι το αποτέλεσμα αν το πρώτο στοιχείο του πίνακα βρίσκεται στη θέση μνήμης 44 και έχει τιμή 20, το δεύτερο στοιχείο έχει τιμή 150 και το περιεχόμενο του καταχωρητή R1 έχει τιμή 50;
* Να απαντήσετε στα παραπάνω ερωτήματα χρησιμοποιώντας τον:
    α) απόλυτο τρόπο διευθυνσιοδότησης,
    β) τρόπο διευθυνσιοδότησης με αυτοαύξηση και καταχωρητή.
       (Να χρησιμοποιήσετε τον καταχωρητή R2 που η αρχική του τιμή είναι 100.)

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 10