Ρυθμίσεις του 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 κοιτάξτε το εγχειρίδιο χρήσης.