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

Κωδικοποίηση εντολών του 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

Σχήμα 6.2.1 – Τα πεδία της εντολής του υπολογιστή MIPS.


Οι εντολές του MIPS κωδικοποιούνται σε έναν από τους παρακάτω τύπους:

Αριθμητικές και λογικές εντολές (τύπου 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