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

Σύνολο εντολών στον VAX

O VAX υποστηρίζει 3 κατηγορίες εντολών:

Αριθμητικές και λογικές

Μεταφορές δεδομένων και μετατροπές

Εντολές ελέγχου:

      Τερματισμός βρόχων

      Case λειτουργίες

      Κλήση διαδικασιών
 

Αριθμητικές και λογικές

   Περιλαμβάνονται προσθέσεις, αφαιρέσεις, πολλαπλασιασμοί και διαιρέσεις για όλους τους τύπους δεδομένων που αναφέρθηκαν παραπάνω. Κάθε τέτοια εντολή μπορεί να έχει δύο ή τρεις τελεστέους. Παρέχονται επίσης λειτουργίες πάνω σε προσημασμένους ακεραίους.

Παράδειγμα

Ποια η λειτουργία της παρακάτω εντολής πρόσθεσης του VAX;

ADDW2 B 50(R2),R1
Με την εντολή αυτή προσθέτονται το περιεχόμενο του καταχωρητή R1 με έναν πηγαίο τελεστέο που βρίσκεται στη μνήμη με διεύθυνση που υπολογίζεται προσθέτοντας στο περιεχόμενο του καταχωρητή R2 την τιμή 50 (τρόπος διευθυνσιοδότησης με μετατόπιση). Το αποτέλεσμα της πρόσθεσης μεταξύ των δύο πηγαίων τελεστέων καταχωρείται στον καταχωρητή R1. Παρατηρούμε ότι ο καταχωρητής R1 είναι και πηγαιός καταχωρητής και καταχωρητής προορισμού. Ο αριθμός 2 που βρίσκεται στον κωδικό της εντολής δηλώνει ότι το πλήθος των τελεστέων σ' αυτή την εντολή είναι δύο. Το γράμμα W που βρίσκεται στον κωδικό λειτουργίας δηλώνει ότι οι πηγαίοι τελεστέοι που θα προστεθούν είναι μεγέθους 2 bytes. Το σύμβολο B δηλώνει ότι η μετατόπιση είναι μεγέθους 1 byte.
 

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 6

Να εξηγήσετε τον τρόπο με τον οποίο εκτελείται η παρακάτω εντολή του υπολογιστή VAX.

ADDL3 W50(R3),R2,R1

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 6





 




Μεταφορές δεδομένων και μετατροπές

   Παρέχονται εντολές για μεταφορά δεδομένων μεταξύ καταχωρητών και κύριας μνήμης ή και μεταξύ των θέσεων της κύριας μνήμης. Επιπλέον, υπάρχει η δυνατότητα μετατροπής ενός τύπου δεδομένων σε άλλον.

  Στον VAX σε αντίθεση με  τον DLX μπορεί να γίνει μετακίνηση δεδομένων από μια διεύθυνση μνήμης σε μια άλλη χρησιμοποιώντας την εντολή MOV_ . Στον DLX χρειάζεται μια σειρά εντολών για την μετακίνηση αυτή.
 

Ποια η λειτουργία της παρακάτω εντολής του VAX;

MOVB  W­ 50(R1),(R2)
Με την εντολή αυτή μετακινούνται τα δεδομένα που βρίσκονται στη θέση μνήμης η διευθυνση της οποίας υπολογίζεται προσθέτοντας στο περιεχόμενο του καταχωρητή R1 την τιμή 50 (τρόπος διευθυνσιοδότησης με μετατόπιση) στη θέση μνήμης με διεύθυνση το περιεχόμενο του καταχωρητή R2 (έμμεσος καταχωρητή τρόπος διευθυνσιοδότησης). Το γράμμα Β που βρίσκεται στον κωδικό της εντολής δηλώνει ότι το δεδομένο που θα μετακινηθεί είναι μεγέθους 1 byte. Το σύμβολο W­ δηλώνει ότι η μετατόπιση είναι μεγέθους 2 bytes.
 
 



 





Εντολές ελέγχου

    Στο σύνολο εντολών περιλαμβάνεται ένα πλήρες σύνολο εντολών διακλάδωσης υπό συνθήκη. Στις εντολές ελέγχου εξετάζονται τα ψηφία  N(Negative), V(oVerflow), Z(Zero), C(Carry) του καταχωρητή κατάστασης. Τα ψηφία αυτά τίθενται μετά από την εκτέλεση οποιασδήποτε εντολής ανάλογα με τον τύπο της και το αποτέλεσμά της.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 7

Θυμάστε τι είναι ο καταχωρητής συνθήκης και από τι αποτελείται; Για περισσότερες λεπτομέρειες μπορείτε να ανατρέξετε στην 2η ενότητα αυτού του κεφαλαίου και συγκεκριμένα στην υποενότητα «Eντολές ελέγχου ροής εκτέλεσης του προγράμματος».

Ποια η λειτουργία της παρακάτω σειράς εντολών του VAX;

                            CMPL R1,50(R2);
                            BLEQ exit1                 του VAX. Το exit1 συμβολίζει μια διεύθυνση μνήμης.
Είναι μια εντολή σύγκρισης και διακλάδωσης. Η εντολή σύγκρισης θέτει τον κώδικα συνθήκης που θα χρησιμοποιηθεί από υην εντολή διακλάδωσης που ακολουθεί. Έτσι με την εντολή αυτή συγκρίνονται το περιεχόμενο του καταχωρητή R1 με το περιεχόμενο της θέσης μνήμης που βρίσκεται στη διεύθυνση που υπολογίζεται προσθέτοντας την τιμή 50 (μετατόπιση) στο περιεχόμενο του καταχωρητή R2 (τρόπος διευθυνσιοδότησης με μετατόπιση). Τα δεδομένα που συγκρίνονται είναι μεγέθους 4 bytes λόγω του γράμματος L που βρίσκεται στον κωδικό της εντολής CMP_ . Έτσι το δεδομένο που ανακτάται από τη μνήμη καταλαμβάνει 4 διαδοχικές θέσεις μνήμης του ενός byte, ξεκινώντας από το byte του οποίου η διεύθυνση είναι αυτή που υπολογίστηκε. Αν το περιεχόμενο του καταχωρητή R1 είναι μικρότερο ή ίσο του δεδομένου που ανακτήθηκε από τη μνήμη τότε ο PC φορτώνεται με την τιμή exit1.
 

Παρακάτω ακολουθεί μια σειρά ειδικών εντολών ελέγχου:


 




Τερματισμός βρόχων

   O VAX διαθέτει την εντολή τριών τελεστέων AOBLEQ (Add One and Branch on Less than or EQual) που είναι χρήσιμη στον έλεγχο τερματισμού ενός βρόχου. Αυξάνει τη μεταβλητή βρόχου, τη συγκρίνει με ένα ανώτατο όριο και επαναλαμβάνει τον βρόχο αν το όριο δεν έχει ξεπεραστεί. Ο πρώτος τελεστέος καθορίζει τον ανώτατο όριο, ο δεύτερος είναι το όνομα της μεταβλητής του βρόχου και ο τρίτος είναι το offset της διακλάδωσης.
 



Case λειτουργίες

   Ο VAX υποστηρίζει μια εντολή τριών τελεστέων (με κωδικό Case), για να υλοποιήσει τις Case εντολές των γλωσσών υψηλού επιπέδου. Η εκτέλεση αυτής της εντολής προκαλεί μια διακλάδωση στην αρχή του μπλόκ εντολών που θα εκτελεστεί.
 



 



 Κλήση διαδικασιών

Η αποδοτικότητα εκτέλεσης των κλήσεων διαδικασιών είναι ένας σημαντικός παράγοντας στην αξιολόγηση του συνόλου εντολών ενός υπολογιστή. Και αυτό διότι οι μοντέρνες γλώσσες προγραμματισμού χρησιμοποιούν όλο και περισσότερο τις διαδικασίες για να καταστήσουν τα προγράμματά τους περισσότερο ευέλικτα.

   Δυο σημαντικά στοιχεία στον χειρισμό των κλήσεων διαδικασιών είναι:

1. Ο τρόπος μεταβίβασης των παραμέτρων από το πρόγραμμα στην καλούμενη διαδικασία.

2. Ο τρόπος με τον οποίο σώζονται τα περιεχόμενα των καταχωρητών της κεντρικής μονάδας επεξεργασίας κατά την εκτέλεση της καλούμενης διαδικασίας και ο τρόπος επαναφοράς τους όταν επιστρέφουμε στο κυρίως πρόγραμμα.

   Ο VAX διαθέτει τις εξής μεθόδους για την εκτέλεση κλήσεων διαδικασιών οι οποίες διαφέρουν στο πέρασμα των παραμέτρων: 1. Οι παράμετροι τοποθετούνται σε ένα μπλόκ της κύριας μνήμης στο οποίο η εντολή (μέσω της οποίας γίνεται η κλήση της διαδικασίας) έχει πρόσβαση μέσω ενός δείκτη.
2. Το πέρασμα των παραμέτρων γίνεται μέσω της στοίβας του επεξεργαστή.
 
Ποια η λειτουργία της παρακάτω εντολής του VAX;
                            CALLS #n,PROC
Η εντολή αυτή περιέχει δύο τελεστέους. Ο πρώτος (n) καθορίζει το πλήθος των 32 bits παραμέτρων, που έχουν προηγουμένος τοποθετηθεί στη στοίβα. Ο δεύτερος (PROC) είναι η διεύθυνση της διαδικασίας που θα κληθεί.