Τρόποι
διευθυνσιοδότησης του υπολογιστή MIPS
Στον υπολογιστή MIPS υπάρχουν οι παρακάτω τρόποι διευθυνσιοδότησης:
Τρόπος διευθυνσιοδότησης | Υπολογισμός διεύθυνσης |
---|---|
Απευθείας | Ο τελεστέος είναι μία σταθερά με γνωστή διεύθυνση. |
Καταχωρητή | Ο τελεστέος είναι το περιεχόμενο ενός καταχωρητή. |
Έμμεσος καταχωρητή με μετατόπιση | Ο τελεστέος βρίσκεται στη διεύθυνση μνήμης, η οποία προκύπτει από το άθροισμα του περιεχομένου του καταχωρητή και μίας σταθεράς. |
Παράδειγμα
Έστω ότι θέλουμε να προσθέσουμε τη σταθερά 4 στον καταχωρητή $29, η οποία βρίσκεται στη διεύθυνση AddrConstant4. Για να γίνει αυτό στον υπολογιστή MIPS θα πρέπει να εκτελεστεί η παρακάτω ακολουθία εντολών:
lw $24, AddrConstant4($0)
add $29, $29, $24
Με την πρώτη εντολή η οποία είναι μια εντολή φόρτωσης, αρχικά φορτώνεται η σταθερά 4 στον καταχωρητή $24. Στη συνέχεια, με την εντολή add προστίθεται το περιεχόμενο του καταχωρητή $24 (η σταθερά 4) με το περιεχόμενο του καταχωρητή $29 και το αποτέλεσμα αποθηκεύεται στον καταχωρητή $29 Παρατηρούμε ότι χρειάζονται δύο εντολές για να εκτελεστεί αυτή η πράξη.
Προκειμένου να αποφύγουμε τις εντολές επικοινωνίας με τη μνήμη (φόρτωση ή αποθήκευση), μπορεί να χρησιμοποιηθεί ο απευθείας τρόπος διευθυνσιοδότησης. Επομένως, για την εντολή add του παραδείγματος χρησιμοποιείται ένας τελεστέος ο οποίος είναι σταθερά και ονομάζεται addi (add immediate). Για να προσθέσουμε λοιπόν τη σταθερά 4 στον καταχωρητή $29 έχουμε:
Επομένως με τη χρήση του απευθείας τρόπου διευθυνσιοδότησης, το περιεχόμενο του καταχωρητή $29 προστίθεται με τη σταθερά 4 και το αποτέλεσμα αποθηκεύεται στον καταχωρητή $29, χωρίς να μεσολαβήσει επικοινωνία με τη μνήμη.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 1
Παράδειγμα
Έστω η παρακάτω εντολή φόρτωσης δεδομένων από τη μνήμη: lw $1, 100($2)
Η εντολή αυτή χρησιμοποιεί τον τρόπο διευθυνσιοδότησης: έμμεσος καταχωρητή με αυτοαύξηση. Η εκτέλεση της εντολής αυτής μεταφέρει δεδομένα από μία θέση μνήμης σε έναν καταχωρητή. Η διεύθυνση της μνήμης που υπάρχουν τα δεδομένα υπολογίζεται από το άθροισμα της τιμής 100 και το πριεχόμενο του καταχωρητή $2. Το αποτέλεσμα αποθηκεύεται στον καταχωρητή $1.
![]() |
![]() |
![]() |
![]() |