Σύνολο εντολών στον VAX
O VAX υποστηρίζει 3 κατηγορίες εντολών:
Μεταφορές
δεδομένων και μετατροπές
Παράδειγμα
Ποια η λειτουργία της παρακάτω εντολής πρόσθεσης του VAX;
Με την εντολή αυτή προσθέτονται το περιεχόμενο του καταχωρητή R1 με έναν πηγαίο τελεστέο που βρίσκεται στη μνήμη με διεύθυνση που υπολογίζεται προσθέτοντας στο περιεχόμενο του καταχωρητή R2 την τιμή 50 (τρόπος διευθυνσιοδότησης με μετατόπιση). Το αποτέλεσμα της πρόσθεσης μεταξύ των δύο πηγαίων τελεστέων καταχωρείται στον καταχωρητή R1. Παρατηρούμε ότι ο καταχωρητής R1 είναι και πηγαιός καταχωρητής και καταχωρητής προορισμού. Ο αριθμός 2 που βρίσκεται στον κωδικό της εντολής δηλώνει ότι το πλήθος των τελεστέων σ' αυτή την εντολή είναι δύο. Το γράμμα W που βρίσκεται στον κωδικό λειτουργίας δηλώνει ότι οι πηγαίοι τελεστέοι που θα προστεθούν είναι μεγέθους 2 bytes. Το σύμβολο BADDW2 B50(R2),R1
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 6
Μεταφορές
δεδομένων και μετατροπές
Παρέχονται εντολές για μεταφορά δεδομένων μεταξύ καταχωρητών και κύριας μνήμης ή και μεταξύ των θέσεων της κύριας μνήμης. Επιπλέον, υπάρχει η δυνατότητα μετατροπής ενός τύπου δεδομένων σε άλλον.
Στον
VAX σε αντίθεση με τον DLX μπορεί να γίνει μετακίνηση δεδομένων από
μια διεύθυνση μνήμης σε μια άλλη χρησιμοποιώντας την εντολή MOV_ . Στον
DLX χρειάζεται μια σειρά εντολών για την μετακίνηση αυτή.
Ποια
η λειτουργία της παρακάτω εντολής του VAX;
Με την εντολή αυτή μετακινούνται τα δεδομένα που βρίσκονται στη θέση μνήμης η διευθυνση της οποίας υπολογίζεται προσθέτοντας στο περιεχόμενο του καταχωρητή R1 την τιμή 50 (τρόπος διευθυνσιοδότησης με μετατόπιση) στη θέση μνήμης με διεύθυνση το περιεχόμενο του καταχωρητή R2 (έμμεσος καταχωρητή τρόπος διευθυνσιοδότησης). Το γράμμα Β που βρίσκεται στον κωδικό της εντολής δηλώνει ότι το δεδομένο που θα μετακινηθεί είναι μεγέθους 1 byte. Το σύμβολο W δηλώνει ότι η μετατόπιση είναι μεγέθους 2 bytes.MOVB W 50(R1),(R2)
Στο σύνολο
εντολών περιλαμβάνεται ένα πλήρες σύνολο εντολών διακλάδωσης υπό συνθήκη.
Στις εντολές ελέγχου εξετάζονται τα ψηφία N(Negative), V(oVerflow),
Z(Zero), C(Carry) του καταχωρητή κατάστασης. Τα ψηφία αυτά τίθενται μετά
από την εκτέλεση οποιασδήποτε εντολής ανάλογα με τον τύπο της και το αποτέλεσμά
της.
Παρακάτω ακολουθεί μια σειρά ειδικών εντολών ελέγχου:
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 7
Θυμάστε τι είναι ο καταχωρητής συνθήκης και από τι αποτελείται; Για περισσότερες λεπτομέρειες μπορείτε να ανατρέξετε στην 2η ενότητα αυτού του κεφαλαίου και συγκεκριμένα στην υποενότητα «Eντολές ελέγχου ροής εκτέλεσης του προγράμματος».
Ποια
η λειτουργία της παρακάτω σειράς εντολών του VAX;
CMPL R1,50(R2);
Είναι μια εντολή σύγκρισης και διακλάδωσης.
Η εντολή σύγκρισης θέτει τον κώδικα συνθήκης που θα χρησιμοποιηθεί από
υην εντολή διακλάδωσης που ακολουθεί. Έτσι με την εντολή αυτή συγκρίνονται
το περιεχόμενο του καταχωρητή R1 με το περιεχόμενο της θέσης μνήμης που
βρίσκεται στη διεύθυνση που υπολογίζεται προσθέτοντας την τιμή 50 (μετατόπιση)
στο περιεχόμενο του καταχωρητή R2 (τρόπος διευθυνσιοδότησης με μετατόπιση).
Τα δεδομένα που συγκρίνονται είναι μεγέθους 4 bytes λόγω του γράμματος
L που βρίσκεται στον κωδικό της εντολής CMP_ . Έτσι το δεδομένο που ανακτάται
από τη μνήμη καταλαμβάνει 4 διαδοχικές θέσεις μνήμης του ενός byte, ξεκινώντας
από το byte του οποίου η διεύθυνση είναι αυτή που υπολογίστηκε. Αν το περιεχόμενο
του καταχωρητή R1 είναι μικρότερο ή ίσο του δεδομένου που ανακτήθηκε από
τη μνήμη τότε ο PC φορτώνεται με την τιμή exit1.
BLEQ exit1
του
VAX. Το exit1 συμβολίζει μια διεύθυνση
μνήμης.
O VAX διαθέτει
την εντολή τριών τελεστέων AOBLEQ (Add One and Branch on Less than or EQual)
που είναι χρήσιμη στον έλεγχο τερματισμού ενός βρόχου. Αυξάνει τη μεταβλητή
βρόχου, τη συγκρίνει με ένα ανώτατο όριο και επαναλαμβάνει τον βρόχο αν
το όριο δεν έχει ξεπεραστεί. Ο πρώτος τελεστέος καθορίζει τον ανώτατο όριο,
ο δεύτερος είναι το όνομα της μεταβλητής του βρόχου και ο τρίτος είναι
το offset της διακλάδωσης.
Ο VAX υποστηρίζει
μια εντολή τριών τελεστέων (με κωδικό Case), για να υλοποιήσει τις Case
εντολές των γλωσσών υψηλού επιπέδου. Η εκτέλεση αυτής της εντολής προκαλεί
μια διακλάδωση στην αρχή του μπλόκ εντολών που θα εκτελεστεί.
Δυο σημαντικά στοιχεία στον χειρισμό των κλήσεων διαδικασιών είναι:
2. Ο τρόπος με τον οποίο σώζονται τα περιεχόμενα των καταχωρητών της κεντρικής μονάδας επεξεργασίας κατά την εκτέλεση της καλούμενης διαδικασίας και ο τρόπος επαναφοράς τους όταν επιστρέφουμε στο κυρίως πρόγραμμα.
CALLS #n,PROC
![]() |
![]() |
![]() |
![]() |
![]() |