Μικροεπεξεργαστές MIPS-32 και Προσομοιωτές SPIM και XSPIM (σε περιβάλλον Linux) (Εργαστήριο 1)
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32 Προσομοιωτές SPIM και ΧSPIM (Simulators) Αssembly Language και Γλώσσα Μηχανής Βασικές εντολές σε περιβάλλον Linux 2
Αρχιτεκτονική Μικροεπεξεργαστή (MIPS-32) Κεντρική Μονάδα Επεξεργασίας Καταχωρητές Αριθμητική (Λογική) Μονάδα Ειδικά Κυκλώματα Βοηθητική Μονάδα Επεξεργασίας Καταχωρητές ειδικής χρήσης Μνήμη 3
Χάρτης Μνήμης (MIPS-32) Στοίβα Δηλώσεις Εντολές προγράμματος * Κάθε θέση μνήμης κρατά 8 bits, ενώ κάθε καταχωρητής 32 bits (4 Bytes) 4
Προγραμματισμός Μικροεπεξεργαστή Οι μικροεπεξεργαστές συνοδεύονται από ένα σύνολο εντολών το οποίο υποστηρίζουν. Συνήθως υπάρχουν μικροδιαφορές στην σύνταξή μιας εντολής μεταξύ κατασκευαστών αλλά και οικογενειών μικροεπεξεργαστών. Η πιο πάνω γλώσσα είναι γνωστή ως “Assembly” και στόχο έχει να διευκολύνει τον προγραμματιστή o οποίος δεν χρειάζεται να προγραμματίζει σε γλώσσα μηχανής (machine code) η οποία είναι δυσνόητη. Αυτό επιτυγχάνεται με τη χρήση ενός εργαλείου «assembler» το οποίο μεταφράζει στην ουσία τις εντολές μας σε κώδικα μηχανής (αποτελούμενο από 0 και 1). 5
Δομή Αρχείου προσομοίωσης # Στοιχεία προγραμματιστή/κώδικα .data Δηλώσεις (.asciiz, .byte, .word) .text main: Αρχικοποιήσεις Εντολές Προγράμματος # Καινή γραμμή για να τρέξει ο κώδικας 6
Κλήσεις Συστήματος (System Calls) li $v0, 4 # syscall code for printing a string la $a0, str # address of string to print li $v0, 1 # syscall code for printing an integer la $a0, 5 # integer (5) to print li $v0, 10 # syscall code to exit programme syscall # completes system call 7
Δημιουργία νέων φακέλων και αρχείων στο Linux Ανοίξτε ένα παράθυρο Terminal και μπείτε στον επιθυμητό φάκελο εργασίας Πληκτρολογήστε mkdir foldername για δημιουργία νέου φακέλου, cd foldername για αλλαγή του φακέλου εργασίας και στην συνέχεια cat > filename.s για να δημιουργήσετε το αρχείο σας. Ανοίξτε τώρα το νέο σας αρχείο με emacs text editor και γράψτε το πρόγραμμα σας!
Δημιουργία αρχείου “prosthesi Δημιουργία αρχείου “prosthesi.s” (Πρόσθεση 2 αριθμών και εκτύπωση αποτελέσματος) # your name .data out_string: .asciiz “The result is:\n” .text main: li $t1, 10 # load t1 with 10 li $t2, 5 # load t2 with 5 add $t3, $t1, $t2 # add t1 and t2 ->t3 9
Δημιουργία αρχείου “prosthesi Δημιουργία αρχείου “prosthesi.s” (Πρόσθεση 2 αριθμών και εκτύπωση αποτελέσματος) li $v0, 4 la $a0, out_string syscall # syscall to print string li $v0, 1 move $a0, $t3 syscall # syscall to print an integer li $v0, 10 syscall # syscall to exit programme # press enter to keep SPIM HAPPY!
Εξοικείωση με το SPIM (for Linux) Log-in σε λειτουργικό Linux Ανοίξτε ένα παράθυρο εργασίας Terminal Mε την εντολή CD (change directory) βρέστε τoν φάκελο εργασίας σας (cd Desktop / cd HMY213 / cd week1) spim - ξεκινά τον προσομοιωτή read “prosthesi.s” – διαβάζει το αρχείο run – τρέχει τον κώδικα! 11
Εξοικείωση με το GUI του ΧSPIM (for Linux) Πληκτρολογώντας ΧSPIM μέσα στο Terminal, επιλέξτε <load>, γράψτε τo όνομα του αρχείου και επιλέξτε <assembly file>. Με την επιλογή <run> μπορείτε να τρέξετε όλο τον κώδικα σας, ενώ με το <step> ο κώδικας σας τρέχει βηματικά (εντολή με εντολή) 12
Μερικές Εντολές Linux bash / pwd / cd mkdir / cat > read / run / exit locate / whoami / date 13
Μαθησιακοί στόχοι - Εργαστήριο 1 Αρχιτεκτονική MIPS-32 (CPU, Registers, Memory, Co-proc.) Προσομοιωτές SPIM και ΧSPIM (Άνοιγμα και τρέξιμο κώδικα στο SPIM και στο ΧSPIM) Αssembly Language και Γλώσσα Μηχανής (Δομή αρχείου προσομοίωσης και κλήσεις συστήματος - assembler) Βασικές εντολές σε περιβάλλον Linux (Δημιουργία νέων φακέλων και αρχείων + bash, pwd, locate, whoami, date) 14 14