Οι εντολές του DLX κωδικοποιούνται
σε έναν από τους παρακάτω τρεις τύπους:
Εντολή
τύπου - I
6
| 5
| 5
| 16
| bits
|
Kωδικός
λειτουργίας εντολής | Rs1
| Rd
| Immediate (απευθείας)
|
(Οι συμβολισμοί Rs και Rd αναφέρονται στον πηγαίο καταχωρητή (source register) και τον καταχωρητή προορισμού (destination register) αντίστοιχα.)
Η εντολές που κωδικοποιούνται είναι :
ADDI R1,R2,#53
Μετά
την κωδικοποίηση η εντολή έχει τη παρακάτω μορφή :
6
| 5
| 5
| 16
| bits
|
ADDI
| R2
| R1
| 53
|
Στα
6 πρώτα bits (0..5) περιέχεται ο κωδικός της εντολής. Στα επόμενα πέντε
(6..10) ο καταχωρητής που περιέχει τον πηγαίο τελεστέο, στα bits 11..15
ο καταχωρητής στον οποίο θα καταχωρηθεί ο τελεστεός προορισμού και στα
16 τελευταία bits περιέχεται η απευθείας τιμή.
Με
την εντολή αυτή προσθέτουμε την τιμή 53 με το περιεχόμενο του καταχωρητή
R2 και το αποτέλεσμα καταχωρείται στον καταχωρητή R2. Έτσι αν για παράδειγμα
ο R2 είχε την τιμή 47 μετά την εκτέλεση της εντολής ο καταχωρητής R1 θα
έχει την τιμή 100.
Παράδειγμα
Ποια μορφή θα έχει η παρακάτω εντολή μεταπήδησης και σύνδεσης του υπολογιστή DLX; Να εξηγήσετε τον τρόπο με τον οποίο εκτελείται η συγκεκριμένη εντολή.
JALR R2Μετά την κωδικοποίηση η εντολή έχει τη παρακάτω μορφή:
6
| 5
| 5
| 16
| bits
|
JALR
| R2
| 0
| 0
|
O καταχωρητής
που καθορίζει τον προορισμό βρίσκεται κωδικοποιημένος στα bits 6..10. Με
την εντολή αυτή ο PC φορτώνεται με το περιεχόμενο του καταχωρητή R2. Έτσι
στη συνέχεια θα εκτελεστεί η εντολή που βρίσκεται στη θέση μνήμης η διεύθυνση
της οποίας καθορίζεται από το περιεχόμενο του PC. Έτσι αν για παράδειγμα
ο R2 είχε την τιμή 500 τότε η επόμενη εντολή που θα εκτελεστεί είναι εκείνη
που βρίσκεται στη διεύθυνση 500 της μνήμης.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 4
α) Ποιος τρόπος διευθυνσιοδότησης χρησιμοποιείται στην παρακάτω εντολή φόρτωσης του DLX;
γ) Ποιο θα είναι το αποτέλεσμα μετά την εκτέλεση της εντολής, αν ο καταχωρητής R2 έχει τιμή 1000 και η διεύθυνση της θέσης μνήμης 1000 περιέχει την τιμή 500;
6
| 5
| 5
| 5
| 16
| bits
|
Κωδικός
λειτουργίας εντολής | Rs1
| Rs2
| Rd
| Func
πράξη |
Κωδικοποιεί αριθμητικές και
λογικές εντολές : Rd ¬
Rs1 func Rs2.
Στον κωδικό λειτουργίας της εντολής περιέχεται η
πληροφορία ότι η εντολή είναι μια αριθμητική/λογική εντολή στην οποία χρησιμοποιούνται
μόνο καταχωρητές (υπονοείται ότι ο τρόπος διευθυνσιοδότησης των τελεστέων είναι άμεσος καταχωρητή).
Στο πεδίο Func βρίσκεται κωδικοποιημένη
η πράξη που θα εκτελεστεί μεταξύ των περιεχομένων του καταχωρητή Rs1 και
Rs2.
Παράδειγμα
Πως κωδικοποιείται η παρακάτω εντολή πρόσθεσης του DLX:
ADD R1,R2,R3
Η εντολή μετά την κωδικοποίηση έχει την παρακάτω μορφή :
6
| 5
| 5
| 5
| 16
| bits
|
Κωδικός
λειτουργίας εντολής | R2
| R3
| R1
| ADD
|
Οι καταχωρητές που περιέχουν τους πηγαίους τελεστέους βρίσκονται κωδικοποιημένοι
στα bits 6..10 και 11..15 , ενώ ο καταχωρητής στον οποίο θα καταχωρηθεί
ο τελεστέος προορισμού βρίσκεται κωδικοποιημένος στα bits 16..20. Στα τελευταία
11 bits βρίσκεται κωδικοποιημένη η πράξη που θα γίνει μεταξύ των δύο πηγαίων
τελεστέων (στο παράδειγμά μας είναι η πρόσθεση ADD).
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 5
* Να περιγράψετε την εκτέλεση της παρακάτω εντολής του υπολογιστή DLX.
* Να εκτελέσετε την παραπάνω εντολή χρησιμοποιώντας το λογισμικό που βρίσκεται στην ιστοσελίδα:
* Να συγκρίνετε το αποτέλεσμα της εκτέλεση της εντολής από το λογισμικό, με την απάντηση που δώσατε.
6
| 26
| bits
|
Κωδικός
λειτουργίας εντολής | Offset που προστίθεται στον PC
|
Κωδικοποιεί εντολές : Μεταπήδησης , μεταπήδησης με σύνδεση και παγίδες
Παράδειγμα
Εξηγήστε
την παρακάτω εντολή μεταπήδησης του DLX;
J name (το name συμβολίζει μια διεύθυνση μνήμης)
Η εντολή μετά την κωδικοποίηση έχει την παρακάτω μορφή:
6
| 26
| bits
|
J
| Offset
|
Στο πεδίο των 26 bits βρίσκεται η τιμή (offset) που θα προστεθεί στον PC
ώστε να δώσει το στόχο της μεταπήδησης (name). Έστω ότι η εντολή μεταπήδησης
βρίσκεται στη θέση μνήμης με διεύθυνση 1000 και το name έχει την τιμή 1050.
Ο PC μετά την αποκωδικοποίηση της εντολής έχει αυξηθεί κατά 4, δηλαδή ο
PC έχει την τιμή 1004. Έτσι το offset που θα προστεθεί στον PC ώστε να
δώσει τιμή 1050 είναι 46.
Δηλαδή:
PC =1004
offset=46
name=1050
name= PC+offset
![]() |
![]() |
![]() |
![]() |
![]() |