Οποιαδήποτε CPU έχει σχεδιαστεί από την αρχή για να υποστηρίζει ένα συγκεκριμένο σύνολο εντολών. Ένα σύνολο εντολών είναι ένα σύνολο λειτουργιών με σκληρό κώδικα που μπορεί να εκτελέσει η CPU. Αυτές οι πράξεις μπορεί να είναι, για παράδειγμα, η πρόσθεση δύο αριθμών, η μετάβαση σε διαφορετικό μέρος του προγράμματος ή η σύγκριση δύο τιμών. Κάθε λειτουργία που μπορεί να εκτελέσει ένας υπολογιστής αντιπροσωπεύεται μοναδικά από έναν κωδικό λειτουργίας.
Opcodes
Κατά την εκτέλεση ενός προγράμματος, η CPU χρησιμοποιεί έναν μετρητή προγράμματος για να παρακολουθεί ποια εντολή πρέπει να εκτελεστεί στη συνέχεια. Όταν λαμβάνεται μια εντολή, ο μετρητής προγράμματος αυξάνεται κατά το μήκος της εντολής έτσι ώστε να δείχνει την αρχή της επόμενης εντολής. Κάθε εντολή αποτελείται από έναν κωδικό λειτουργίας. Ανάλογα με την εντολή, μπορεί να περιλαμβάνει ή όχι τελεστές. Οι τελεστές μπορεί να είναι μια σταθερή τιμή ή ένας δείκτης στη θέση μιας τιμής στον καταχωρητή της CPU ή στη μνήμη RAM του συστήματος.
Μόλις ληφθεί η πλήρης εντολή, πρέπει να αποκωδικοποιηθεί. Αυτή είναι η διαδικασία όπου η CPU διαχωρίζει τον κωδικό λειτουργίας και τυχόν τελεστές. Ο αποκωδικοποιημένος κωδικός λειτουργίας χρησιμοποιείται για να ενεργοποιήσει ή να απενεργοποιήσει συγκεκριμένες ηλεκτρικές διαδρομές στην CPU που θα οδηγήσουν στη σωστή λειτουργία.
Μόλις αποκωδικοποιηθεί η εντολή, θα εκτελεστεί. Η ακριβής συμπεριφορά της CPU θα εξαρτηθεί από τη λειτουργία. Μια πράξη πρόσθεσης θα αθροίσει δύο τιμές μαζί. Μια λειτουργία άλματος θα υπολογίσει σε ποιο σημείο του προγράμματος θα μεταβείτε. Μια λειτουργία σύγκρισης θα συγκρίνει δύο τιμές. Μια λειτουργία NOP θα παραμείνει σε αδράνεια, καθώς το NOP σημαίνει No Operation.
Στη συνέχεια, οι περισσότερες οδηγίες θα παράγουν το αποτέλεσμα της λειτουργίας. Αυτή η έξοδος μπορεί να πάει στους καταχωρητές του επεξεργαστή και, εάν είναι απαραίτητο, στη μνήμη RAM του συστήματος. Κάθε μία από αυτές τις λειτουργίες χρειάζεται έναν μόνο κύκλο ρολογιού για να ολοκληρωθεί.
Παράνομοι κωδικοί
Κάθε αρχιτεκτονική CPU έχει τη συγκεκριμένη λίστα με τους κωδικούς λειτουργίας που δημοσιεύει ο κατασκευαστής. Οι τιμές αυτών των opcodes δεν είναι απαραίτητα οι ίδιες cross-platform, γι' αυτό το λογισμικό πρέπει να μεταγλωττιστεί για διαφορετικές αρχιτεκτονικές. Σε ορισμένες περιπτώσεις, ο κατασκευαστής περιλαμβάνει επίσης μη τεκμηριωμένους κωδικούς λειτουργίας. Αυτοί αναφέρονται ως "παράνομοι κωδικοί". Οι παράνομοι κωδικοί λειτουργίας, αν και δεν είναι τεκμηριωμένοι, θα εκτελούν την ίδια λειτουργία κάθε φορά που καλούνται. Ωστόσο, ως μη τεκμηριωμένες και μη τυπικές λειτουργίες, οι ενημερώσεις στην αρχιτεκτονική της CPU μπορούν απλώς να τις αφαιρέσουν.
Ορισμένα πρώιμα παιχνίδια υπολογιστή στο Apple II βασίζονταν σε συγκεκριμένους παράνομους κωδικούς. Στη συνέχεια, αντιμετώπισαν προβλήματα απόδοσης και σταθερότητας στην μεταγενέστερη αναθεώρηση της CPU της Apple IIc καθώς το IIc αφαίρεσε τους παράνομους κωδικούς λειτουργίας που απαιτούσαν τα παιχνίδια. Οι παράνομοι κωδικοί πρόσβασης χρησιμοποιήθηκαν επίσης σε κύκλους προστασίας πνευματικών δικαιωμάτων ως μέθοδος ασφάλειας μέσω της αφάνειας στον αγώνα τους ενάντια στους πειρατές που σπάζουν το περιεχόμενό τους. Ορισμένοι παράνομοι κωδικοί λειτουργίας εννοούνται απλώς ως εργαλεία εντοπισμού σφαλμάτων και χειριστές σφαλμάτων.
Το σύνολο εντολών x86 περιέχει μεγάλο αριθμό μη τεκμηριωμένων παράνομων κωδικών λειτουργίας. Είναι ενδιαφέρον ότι ορισμένα από αυτά μοιράζονται μεταξύ των επεξεργαστών Intel και AMD, υποδεικνύοντας ότι και οι δύο εταιρείες γνωρίζουν δημοσίως τον σκοπό τους ενώ δεν διαθέτουν έγγραφα.
Μεταγλωττιστές και συναρμολόγηση
Τα περισσότερα προγράμματα είναι γραμμένα σε γλώσσες υψηλού επιπέδου. Αυτά είναι σχετικά εύκολα στην ανάγνωση, χρησιμοποιώντας συχνά αγγλικές λέξεις ή στενογραφία για να ελαχιστοποιηθούν οι καμπύλες μάθησης. Για να εκτελέσει ένας υπολογιστής αυτά τα προγράμματα, πρέπει να μεταγλωττιστούν. Ένας μεταγλωττιστής είναι βασικά ένας μεταφραστής. Παίρνει τον κώδικα υψηλού επιπέδου και τον μετατρέπει σε κώδικα υπολογιστή, τις οδηγίες που μπορεί να κατανοήσει η CPU.
Είναι επίσης δυνατό, σε ορισμένες γλώσσες, να εκτελείται μη μεταγλωττισμένος κώδικας μέσω ενός προηγουμένως μεταγλωττισμένου προγράμματος που δημιουργεί κώδικα μηχανής εν κινήσει. Το Assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου που χρησιμοποιεί στενογραφία για να επιτρέπει στους προγραμματιστές να έχουν άμεση ορατότητα και έλεγχο των λειτουργιών που εκτελούνται. Το NOP είναι ένα παράδειγμα συντομογραφίας συναρμολόγησης.
συμπέρασμα
Ένα σύνολο εντολών είναι μια λίστα επίσημων λειτουργιών που μπορεί να εκτελέσει μια αρχιτεκτονική CPU. Είναι μια λίστα λειτουργιών που μπορούν να εκτελεστούν. Αυτές οι λειτουργίες κωδικοποιούνται σκληρά στην CPU και καλούνται χρησιμοποιώντας τους αντίστοιχους κωδικούς λειτουργίας τους.
Το λογισμικό χρησιμοποιεί γενικά έναν μεταγλωττιστή για τη μετάφραση από τον αναγνώσιμο από τον άνθρωπο κώδικα υψηλού επιπέδου στον κώδικα μηχανής που μπορεί να διαβάσει η CPU. Μερικές φορές, μια αρχιτεκτονική CPU μπορεί να έχει μη τεκμηριωμένους κωδικούς λειτουργίας, που ονομάζονται παράνομοι κωδικοί λειτουργίας. Οι παράνομοι κωδικοί λειτουργίας αποτελούν τεχνικά μέρος του συνόλου οδηγιών. Ωστόσο, ενδέχεται να μην είναι αξιόπιστα διαθέσιμα σε μελλοντικές επαναλήψεις πλατφόρμας. Μην ξεχάσετε να αφήσετε τις σκέψεις σας στα σχόλια παρακάτω.