Η εξομοίωση είναι μια προσπάθεια μίμησης μιας συσκευής σε ένα συγκεκριμένο σύστημα. Υπάρχουν τρεις τρόποι δημιουργίας εξομοιωτών: δυναμική και στατική ανασύνθεση και ερμηνεία. Για να επιτύχετε το μέγιστο αποτέλεσμα ταχύτητας κατά την εργασία, συνιστάται η χρήση και των τριών μεθόδων. Ας εξετάσουμε ένα παράδειγμα γραφής ενός τυπικού εξομοιωτή επεξεργαστή.
Οδηγίες
Βήμα 1
Επιλέξτε μια γλώσσα προγραμματισμού. Η συνιστώμενη και πιθανώς η μόνη εναλλακτική λύση είναι C και Assembler. Στο C, μπορείτε να δημιουργήσετε κώδικα που θα μεταφερθεί σε άλλες πλατφόρμες. Είναι σχετικά απλό στην κατανόηση και εύκολο στην εντοπισμό σφαλμάτων, αλλά πολύ πιο αργό από τους άλλους. Ο συναρμολογητής διακρίνεται από την υψηλή ταχύτητα εργασίας του, χρησιμοποιεί καταχωρητές επεξεργαστών, οι οποίοι συμβάλλουν στην προσέγγιση του προγράμματος με την αναδιάταξη. Ωστόσο, είναι πολύ δύσκολο να εντοπίσετε και να διορθώσετε κωδικούς σε αυτό. Είναι σημαντικό να γνωρίζετε καλά την επιλεγμένη γλώσσα και να βελτιστοποιείτε τον κώδικα καλά για ταχύτητα.
Βήμα 2
Αντιστοιχίστε μια αρχική τιμή στον κυκλικό μετρητή και τον μετρητή προγράμματος. Ο κυκλικός μετρητής μετρά τον αριθμό κύκλων ρολογιού μετά τους οποίους συμβαίνει η διακοπή και ο υπολογιστής λογισμικού δείχνει την περιοχή μνήμης στην οποία βρίσκεται η επόμενη εντολή opcode.
Βήμα 3
Αφού λάβετε τον opcode, αφαιρέστε τον αριθμό των κύκλων ρολογιού που απαιτείται για την εκτέλεση του opcode από τον μετρητή βρόχου. Λάβετε υπόψη ότι ορισμένες εντολές διαφέρουν στον αριθμό των κροτώνων ανάλογα με τα ορίσματα. Για τέτοιες εντολές, αλλάξτε τον μετρητή στον κώδικα εκτέλεσης αργότερα.
Βήμα 4
Μετά την επιτυχή εκτέλεση του opcode, ελέγξτε την ανάγκη ενεργοποίησης διακοπών. Σε αυτό το σημείο, ολοκληρώστε τις εργασίες που πρέπει επειγόντως να συγχρονιστούν εγκαίρως.
Βήμα 5
Ελέγξτε κάθε πέρασμα του κύκλου για την ανάγκη ολοκλήρωσης της εργασίας του. Να θυμάστε ότι το πρόγραμμα πρέπει να είναι αρθρωτό, καθώς οι περισσότεροι υπολογιστές αποτελούνται από λειτουργικές μονάδες, και ένας τυπικός εξομοιωτής θα πρέπει, εάν είναι δυνατόν, να είναι ίδιος με το αρχικό σύστημα. Αυτό θα παρέχει ταχύτερο και ευκολότερο εντοπισμό σφαλμάτων του προγράμματος και θα μπορείτε να χρησιμοποιήσετε τις ίδιες ενότητες για διαφορετικούς εξομοιωτές, επειδή πολλοί υπολογιστές βασίζονται στα ίδια μοντέλα επεξεργαστών ή επεξεργαστών βίντεο.