Κωδικοποίηση εντολών του MIPS
Ο τρόπος με τον οποίο κωδικοποιούνται οι εντολές στον υπολογιστή MIPS απεικονίζεται στο σχήμα 2.6.1. Όπως φαίνεται και στο σχήμα, η εντολή αποτελείται από 32 bits, δηλαδή όσο είναι το μέγεθος μιας λέξης δεδομένων.
Τα πεδία της εντολής είναι διαφορετικά ανάλογα με το είδος της εντολής που κωδικοποιείται και τον τρόπο διευθυνσιοδότησης που χρησιμοποιείται.
Για παράδειγμα, οι αριθμητικές και λογικές εντολές με διευθυνσιοδότηση καταχωρητή χωρίζονται σε έξι πεδία τα οποία είναι:
* op: κωδικός λειτουργίας της εντολής,
* rs: ο πρώτος πηγαίος καταχωρητής,
* rt: ο δεύτερος πηγαίος καταχωρητής,
* rd: ο καταχωρητής προορισμού,
* shamt: ψηφία ολίσθησης,
* funct: λειτουργία, το πεδίο αυτό καθορίζει τη λειτουργία που θα εκτελεστεί από την εντολή σύμφωνα με το πεδίο op.
6
| 5
| 5
| 5
| 5
| 6
|
op
| rs
| rt
| rd
| shamt
| funct
|
Αριθμητικές και λογικές εντολές (τύπου R)
Εντολές επικοινωνίας με τη μνήμη
Αριθμητικές και λογικές εντολές (τύπου R)
Στις αριθμητικές και λογικές εντολές περιλαμβάνονται προσθέσεις, αφαιρέσεις, πολλαπλασιασμοί, διαιρέσεις και λογικές πράξεις (and, or, κλπ.) για όλους τους τύπους δεδομένων του υπολογιστή MIPS.
Παράδειγμα
Πώς κωδικοποιούνται και εκτελούνται οι παρακάτω εντολές του MIPS;
and rd, rs, rt
addi rt, rs, Imm
Στην περίπτωση της πρώτης εντολής ο τρόπος διευθυνσιοδότησης είναι καταχωρητή και η λειτουργία που πρόκειται να εκτελεστεί είναι το λογικό ΚΑΙ. Δηλαδή, θα εκτελεστεί η πράξη στους πηγαίους καταχωρητές rs και rt και το αποτέλεσμα θα αποθηκευτεί στον καταχωρητή προορισμού rd. Επομένως η εντολή κωδικοποιείται ως εξής:
and rd, rs, rt | |||||
---|---|---|---|---|---|
6
| 5
| 5
| 5
| 5
| 6
|
op
| rs
| rt
| rd
| 0
| funct
(and) |
Η δεύτερη εντολή χρησιμοποιεί τον απευθείας τρόπο διευθυνσιοδότησης με αποτέλεσμα τα δύο τελευταία πεδία της εντολής να αντικαθίστανται με τη σταθερά Immediate.
addi rt, rs, Imm | |||||
---|---|---|---|---|---|
6
| 5
| 5
| 16
| ||
op
| rs
| rt
| Imm
|
Εντολές επικοινωνίας με τη μνήμη
Στις εντολές αυτές περιλαμβάνονται οι εντολές φόρτωσης δεδομένων από τη μνήμη και οι εντολές αποθήκευσης δεδομένων σε καταχωρητές.
Παράδειγμα
Πώς κωδικοποιούνται και εκτελούνται οι παρακάτω εντολές του MIPS;
lw $1, 100($0)
sw $1, 100($2)
lw $1, 100($0): Η εντολή αυτή χρησιμοποιεί τον τρόπο κωδικοποίησης: έμμεσος καταχωρητή με μετατόπιση. Η μετατόπιση είναι η σταθερά 100 και βρίσκεται στο τελευταίο πεδίο της εντολής. Με την εντολή αυτή, η διεύθυνση από την οποία θα φορτωθούν τα δεδομένα στον καταχωρητή $1υπολογίζεται ως εξής: προστίθεται το περιεχόμενο του καταχωρητή $0 (είναι πάντα 0) με την τιμή 100.
lw $1, 100($0) | |||||
---|---|---|---|---|---|
6
| 5
| 5
| 16
| ||
op
| $0
| $1
| 100
|
sw $1, 100($2) : Η εντολή αυτή χρησιμοποιεί τον τρόπο κωδικοποίησης: έμμεσος καταχωρητή με μετατόπιση. Η μετατόπιση είναι η σταθερά 100 και βρίσκεται στο τελευταίο πεδίο της εντολής, όπως και στην εντολή φόρτωσης. Με την εντολή αυτή το περιεχόμενο του καταχωρητή $1 αποθηκεύεται σε μία θέση μνήμης. Η διεύθυνση της μνήμης υπολογίζεται με τον ίδιο τρόπο όπως και στην προηγούμενη εντολή του παραδείγματος αυτού.
sw $1, 100($2) | |||||
---|---|---|---|---|---|
6
| 5
| 5
| 16
| ||
op
| $2
| $1
| 100
|
Τα δεδομένα ονομάζονται ευθυγραμμισμένα εάν η διεύθυνση της μνήμης που περιέχει τα δεδομένα, είναι πολλαπλάσια του μεγέθους των δεδομένων σε bytes. Οι περισσότερες εντολές φόρτωσης/αποθήκευσης εκτελούνται σε ευθυγραμμισμένα δεδομένα. Οι εντολές του MIPS για το χειρισμό των ευθυγραμμισμένων δεδομένων είναι: lwl, lws, swl και swl.
Οι εντολές διακλάδωσης περιλαμβάνουν τις εντολές διακλάδωσης με συνθήκη και τις εντολές μεταπήδησης.
Παράδειγμα
Πώς κωδικοποιούνται και εκτελούνται οι παρακάτω εντολές του MIPS;
beq rs, rt, label
j label
beq rs, rt, label : Με την εντολή αυτή γίνεται σύγκριση των περιεχομένων των καταχωρητών rs και rt. Στην περίπτωση που είναι ίσα τότε η διεύθυνση της επόμενης εντολής υπολογίζεται ως εξής: αυξάνεται το περιεχόμενο του PC κατά 4 + τη σταθερά label. Επομένως η επόμενη προς εκτέλεση εντολή βρίσκεται στην διεύθυνση που υπολογίστηκε. Στην περίπτωση που το περιεχόμενο των δύο καταχωρητών δεν είναι ίσο, τότε η επόμενη εντολή βρίσκεται στη διεύθυνση που υπολογίζεται με την αύξηση του PC κατά 4. Η εντολή κωδικοποιείται ως εξής:
beq rs, rt, label | |||||
---|---|---|---|---|---|
6
| 5
| 5
| 16
| ||
op
| rs
| rt
| label
|
j label : Η εντολή αυτή είναι μια εντολή μεταπήδησης, η οποία αλλάζει τη ροή εκτέλεσης του προγράμματος, μεταφέροντάς το στη διεύθυνση label. Η εντολή αυτή κωδικοποιείται ως εξής: τα πρώτα 6 bits αποτελούν τον κωδικό λειτουργίας της εντολής και τα υπόλοιπα 26 αποτελούν το πεδίο της διεύθυνσης.
j label | |||||
---|---|---|---|---|---|
6
| 26
| ||||
op
| label
|
![]() |
![]() |
![]() |
![]() |