ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών Παρουσίαση Εργαστηρίου 2 Διδάσκων: Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213
Μερικές Εντολές Linux bash / pwd / cd mkdir / cat > spim / xspim / read / run / exit locate / whoami / date HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 2
Δημιουργία νέων φακέλων και αρχείων στο Linux 1. Ανοίξτε ένα παράθυρο Terminal και μπείτε στον επιθυμητό φάκελο εργασίας (cd Desktop) 2. Πληκτρολογήστε mkdir foldername για δημιουργία νέου φακέλου, cd foldername για αλλαγή του φακέλου εργασίας και στην συνέχεια cat > filename.s για να δημιουργήσετε το αρχείο σας. 3. Ανοίξτε τώρα το νέο σας αρχείο με text editor και γράψτε το πρόγραμμα σας! (copy-paste paste week2_2012.s) HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 3
Εξοικείωση με το SPIM (for Linux) 1. Log-in σε λειτουργικό Linux 2. Ανοίξτε ένα παράθυρο εργασίας Terminal 3. Mε την εντολή CD (change directory) βρέστε τoν φάκελο εργασίας σας (cd Desktop / cd HMY213 / cd week2) 4. Εντολή spim file filename.s (ξεκινά τον προσομοιωτή και τρέχει το αρχείο με όνομα: filename.s) 5. Εντολή xspim (ξεκινά το GUI του προσομοιωτή xspim) Ακολουθήστε τις εντολές (Linux) για το SPIM που δίνονται σε αυτή τη διάλεξη! HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 4
Εξοικείωση με το GUI του ΧSPIM (for Linux) Ο προσομοιωτής ΧSPIM μας παρέχει τη δυνατότητα να βλέπουμε άμεσα το περιεχόμενο ενός καταχωρητή ή μιας θέσης μνήμης (όπως και στο QtSpim). Πληκτρολογώντας ΧSPIM μέσα στο Terminal, επιλέξτε <load>, γράψτε τo όνομα του αρχείου και επιλέξτε <assembly file>. Με την επιλογή <run> μπορείτε να τρέξετε όλο τον κώδικα σας, ενώ με το <step> ο κώδικας σας τρέχει βηματικά (εντολή με εντολή) HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 5
Παράδειγμα week2_2012.s Αυτό το αρχείο ζητά από τον χρήστη να δώσει ένα αριθμό από την κονσόλα. Αυτός ο αριθμός ορίζει και το πόσα γινόμενα θα προστεθούν. Τα γινόμενα είναι πάντοτε τα 1x2, 2x3, 3x4, 9x10 Με επιλογή του 3 λοιπόν από τον χρήστη, το πρόγραμμα θα υπολογίσει το άθροισμα των 3 πρώτων γινομένων [1x2 x2+2x3+3x4] και θα τυπώσει το αποτέλεσμα [20] στην οθόνη. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 6
Βρέστε στον κώδικα τα πιο κάτω: 1. Ποιος είναι ο μέγιστος αριθμός που μπορεί να δεχτεί το πρόγραμμα από τον χρήστη και που αποθηκεύεται; 2. Με ποιες εντολές assembly επιτυγχάνεται η λειτουργία ενός μετρητή; 3. Ποια η διαφορά μεταξύ των εντολών: b loop1 και bgt $t1, $t2 loop1 (εγχειρίδιο SPIM A60-A62) A62) Ας δούμε την εκτέλεση αυτού του κώδικα αναλυτικά! HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 7
Βελτίωση του κώδικα (μετονομάστε σε week2_2012a) 1. Υπολογίστε ποιος είναι ο μέγιστος αριθμός για τον οποίο ο κώδικας δίνει το σωστό αποτέλεσμα. Στην συνέχεια τροποποιήστε τον κώδικα έτσι ώστε να δέχεται από τον χρήστη μόνο τους αριθμούς για τους οποίους δίνει το σωστό αποτέλεσμα. βοήθεια: τρέξτε τον κώδικα διαδοχικά δίνοντας ως είσοδο 1870, 1864 και 1862 και παρατηρήστε τα μηνύματα στην οθόνη HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 8
Βελτίωση του κώδικα (μετονομάστε σε week2_2012b) 2. Τροποποιήστε το πρόγραμμα έτσι ώστε μετά από την εμφάνιση του αποτελέσματος να δίνεται η δυνατότητα στον χρήστη για υπολογισμό νέου αθροίσματος γινομένων ή έξοδο από το πρόγραμμα. βοήθεια: για έξοδο από το πρόγραμμα μπορείτε να χρησιμοποιήσετε κάποιον συγκεκριμένο αριθμό που δεν επηρεάζει τη λειτουργία του αρχικού κώδικα. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 9
Πρόσθετα Ερωτήματα 1. Πως επιτυγχάνεται η διαίρεση και ο πολλαπλασιασμός με δυνάμεις του 2 (χωρίς( τη χρήση των εντολών mul και div) 2. Πως επιτυγχάνεται ο έλεγχος συγκεκριμένου μπιτ σε κάποιο καταχωρητή; 3. Με ποιο τρόπο μπορεί να μηδενιστεί (clear) συγκεκριμένο μπιτ σε κάποιο καταχωρητή; 4. Με ποιο τρόπο μπορεί να τεθεί σε λογικό 1 (set) συγκεκριμένο μπιτ σε κάποιο καταχωρητή; 5. Με ποια εντολή μπορεί να αλλάξει η τιμή (invert) συγκεκριμένου μπιτ σε κάποιο καταχωρητή; HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 10
Μαθησιακοί Στόχοι Εργαστηρίου 2 1. Βασικές εντολές Linux (για το μάθημα ΗΜΥ213) 2. Εξοικείωση με το SPIM και το GUI του ΧSPIM 3. Χρήση εντολών assembly για δημιουργία μετρητών, επαναλήψεων, ελέγχου και αριθμητικών πράξεων (πρόσθεσης/αφαίρεσης, πολλαπλασιασμού/διαίρεσης διαίρεσης) 4. Χρήση εντολών assembly (shift, or, and, xor) HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 11