Ρυθμίσεις του SPIM
Α. Μόσχοβος
Εγκαταστήστε
το SPIM χρησιμοποιώντας το
αντίστοιχο αρχείο που μπορείτε να βρείτε στην ιστοσελίδα του μαθήματος.
Στη συνέχεια κοιτάξτε τις παραμέτρους να συμφωνούν με αυτές που φαίνονται παρακάτω. Οι παράμετροι βρίσκονται στην επιλογή “Simulator” και μετά “Settings”.
Είναι σημαντικό το αρχείο στο οποίο δείχνει η παράμετρος “Trap file:” να υπάρχει στο σύστημα σας. Αν για οποιοδήποτε λόγο δεν εγκαταστάθηκε τότε πάρτε το από εδώ, αντιγράψτε το σε κάποιο φάκελο στο σύστημα σας και βάλτε το “Trap file:” να δείχνει εκεί (π.χ. C:\SPIM\trap.handler).
Το κυρίως παράθυρο
του SPIM αποτελείται από 4
περιοχές που σημειώνονται στην παρακάτω εικόνα.
Στην περιοχή 1
φαίνονται όλοι οι καταχωρητές με τη μορφή «ΟΝΟΜΑ (ΣΥΝΩΝΥΜΟ)
= ΤΙΜΗ»
Στην 2,
φαίνονται οι εντολές με τη μορφή «[ΔΙΕΥΘΥΝΣΗ]
ΚΩΔΙΚΟΣ ΕΝΤΟΛΗ_ΟΠΩΣ_ΜΕΤΑΦΡΑΣΤΗΚΕ ;
ΓΡΑΜΜΗ: ΕΝΤΟΛΗ_ΟΠΩΣ_ΤΗ_ΓΡΑΨΑΤΕ».
Στην 3 φαίνονται
τα περιεχόμενα της μνήμης με τη μορφή «[ΔΙΕΥΘΥΝΣΗ ΑΡΧΙΚΗ]...[ΔΙΕΥΘΥΝΣΗ ΤΕΛΙΚΗ]»
ΠΕΡΙΕΧΟΜΕΝΑ_WORD». Αν δεν έχουμε
δώσει δεδομένα για κάποια διεύθυνση αυτή απλά δεν εμφανίζεται.
Στην 4 ο SPIM
μας δίνει διάφορα ενημερωτικά μηνύματα.
Όταν εκτελούμε ένα πρόγραμμα βήμα-βήμα θα μας δείχνει εδώ τις εντολές που εκτελέσαμε.
Για να εκτελέσετε ένα πρόγραμμα σε γλώσσα μηχανής MIPS πρώτα γράψτε το σε ένα αρχείο με κατάληξη .s.
Στη συνέχεια επιλέξτε “File”> “Parse Assembly File”.
Αν το αρχείο
σας είναι σωστό τότε ο SPIM θα
το μεταφράσει εσωτερικά σε εντολές MIPS.
Θα
παρατηρήσετε πως πριν καν φορτώσετε το πρόγραμμα σας υπάρχουν ήδη κάποιες εντολές
στο σύστημα. Αυτές προέρχονται από το αρχείο trap.handler
παραπάνω και χρησιμεύουν για την
προσομοίωση της λειτουργίας ενός στοιχειώδους λειτουργικού συστήματος.
Το πρόγραμμα
σας φορτώνεται μετά τις εντολές αυτές, δηλαδή από τη διεύθυνση 0x00400024 και
μετά.
Για να εκτελέσετε το πρόγραμμα σας θα πρέπει να επιλέξετε την κατάλληλη επιλογή από το μενού Simulator.
Αν πρόκειται για λίγες εντολές χρησιμοποιείστε το “Single-Step”, δηλαδή το F10.
Κάθε φορά που
το πατάτε θα εκτελείται και μία εντολή. Η επόμενη προς εκτέλεση εντολή θα γραμμοσκιάζεται στο τμήμα 2 ενώ αυτή που μόλις εκτελέστηκε
θα εμφανίζεται στο τμήμα 4.
Για παράδειγμα στην παρακάτω εικόνα έχουμε πως η επόμενη εντολή που θα εκτελεστεί είναι η:
[0x00400034] 0x34290008 ori $9, $1, 8 [vc]
(Σημείωση: το [vc] δηλώνει πως η σταθερά της ori υπολογίστηκε χρησιμοποιώντας την τιμή της ετικέτας vc).
Ενώ μόλις εκτελέστηκε η:
[0x00400034] 0x34290008 ori $9, $1, 8 [vc]
Μπορείτε να δείτε
αν το πρόγραμμα σας κάνει αυτό που πρέπει ελέγχοντας μόνο τις τιμές των καταχωρητών και της μνήμης.
Για να σταματάει αυτόματα το SPIM μετά το τέλος των εντολών σας μπορείτε να γράφετε τις εξής δύο γραμμές στο τέλος:
li $v0, 10
syscall
Αυτές υλοποιούν
μια κλήση στο λειτουργικό σύστημα ζητώντας τη λειτουργία 10 που αντιστοιχεί στο
SPIM στον τερματισμό του
προγράμματος.
Για τις άλλες
κλήσεις συστήματος που υποστηρίζει ο SPIM κοιτάξτε το εγχειρίδιο χρήσης.