1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Σχετικά έγγραφα
1 η Άσκηση Στην Αρχιτεκτονική Υπολογιστών

MIPS functions and procedures

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Δομημένος Προγραμματισμός

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Εργαστήριο

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Ψηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:01. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Quicksort. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Ηλεκτρονικοί Υπολογιστές

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Περιεχόμενα ΜΤ Τυχαίας Προσπέλασης Θεωρία Υπολογισμού Ενότητα 23: Μηχανές Turing Τυχαίας Προσπέλασης Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ.

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Προχωρημένες έννοιες προγραμματισμού σε C

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Ηλεκτρονικοί Υπολογιστές

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Δομημένος Προγραμματισμός

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Ψηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αρχιτεκτονική Υπολογιστών

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Δομημένος Προγραμματισμός

Παραδείγματα Assembly (Μέρος

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

Δομημένος Προγραμματισμός

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

Αλγόριθμοι Αναζήτησης

Ψηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:05. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Ενσωματωμένα Συστήματα

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Αρχιτεκτονική Υπολογιστών

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 7: Πρόγραμμα Συνδεδεμένης Λίστας και Διαδικασιών. Μανόλης Γ.Η.

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Οργάνωση Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Αρχιτεκτονική Υπολογιστών

Προγραμματισμός H/Y Ενότητα 7: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 10 Δυαδικά Δένδρα Αναζήτησης

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λογιστικές Εφαρμογές Εργαστήριο

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Αρχιτεκτονική Υπολογιστών

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Αλγόριθμοι και Δομές Δεδομένων(Θ) Ευάγγελος Γ. Ούτσιος

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

Διαδικαστικός Προγραμματισμός

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Οντοκεντρικός Προγραμματισμός

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Συστήματα Μικροϋπολογιστών

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr 1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος 2014-2015, 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟ ΛΟ ΓΙ ΣΤΙ ΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www. c sl a b. ec e. n t ua. gr 1η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος 2014-2015, 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ Τελική Ημερομηνία Παράδοσης: 14/12/2014 ΜΕΡΟΣ Α Δίνεται το παρακάτω πρόγραμμα γραμμένο σε C, καθώς και η αντίστοιχη μετάφραση του σε assembly MIPS. Συμπληρώστε τα κενά. Σας υπενθυμίζουμε ότι ο καταχωρητής $zero είναι πάντα μηδέν. Δίνεται επίσης ότι η διεύθυνση των πρώτων στοιχείων των πινάκων a και b βρίσκονται αποθηκευμένα στους καταχωρητές $t4 και $t5 αντίστοιχα. (Θέμα Σεπτέμβριος 2014) int a[20], b[20] i; int mask = 0xFFFAB000; for (i=0; i < 10; i+=2){ a[i] = (a[i+3] & mask) b[i+1]; } add lui $t1, $zero, $t2, $t2, $t2, loop: lw, ($t4) and, $t3, $t2 lw $t6, 4( ), $t3, $t6 sw $t3, ( ) addi $t4, $t4, addi $t5, $t5, addi $t1, $t1, addi, $t1, bne $t8,, loop ΜΕΡΟΣ B Υλοποίηστε τη διαδικασία (procedure) encode_message σε assembly MIPS η οποία κωδικοποιεί ένα μήνυμα κειμένου με τη χρήση ενός κλειδιού κωδικοποίησης. Θεωρήστε πως το μήνυμα κειμένου είναι μία συμβολοσειρά (null-terminated ASCII string) και το κλειδί κωδικοποίησης μία ακολουθία bytes με μήκος >= 1 (δεν απαιτείται έλεγχος). Η κωδικοποίηση γίνεται με τον εξής τρόπο: Κάθε χαρακτήρας του κειμένου γίνεται XOR με ένα byte του κλειδιού. Όταν φτάσουμε στο τελευταίο byte του κλειδιού ξεκινάμε πάλι από το byte 0. Ο χαρακτήρας NULL (ASCII 0x00) του κειμένου δεν κωδικοποιείται. Η διαδικασία δέχεται τα εξής ορίσματα: στον $a0 έναν δείκτη στη θέση του πρώτου στοιχείου του κειμένου. στον $a1 έναν δείκτη στη θέση του πρώτου στοιχείου του κλειδιού κωδικοποίησης. στον $a2 έναν θετικό ακέραιο που συμβολίζει το μήκος του κλειδιού κωδικοποίησης.

Η κωδικοποίηση του μηνύματος γίνεται in-place, δηλαδή το κωδικοποιημένο μήνυμα γράφεται στις θέσεις μνήμης που καταλάμβανε το αρχικό μήνυμα. Παράδειγμα: Στη διεύθυνση 0x1000 είναι αποθηκευμένο σε ASCII κωδικοποίηση το μήνυμα Hello, World, και στην διεύθυνση 0x1010 το κλειδί της κωδικοποίησης (η ASCII κωδικοποίηση του cslab ): Διεύθυνση Bytes 0x1000 0x48 0x65 0x6C 0x6C 0x6F 0x2C 0x20 0x57 0x1008 0x6F 0x72 0x6C 0x64 0x00 0x00 0x00 0x00 0x1010 0x63 0x73 0x6C 0x61 0x62 0x00 0x00 0x00 Μετά την κλήση της διαδικασίας encode_message η μνήμη περιέχει τα παρακάτω δεδομένα: Διεύθυνση Bytes 0x1000 0x2B 0x16 0x00 0x0D 0x0D 0x4F 0x53 0x3B 0x1008 0x0E 0x10 0x0F 0x17 0x00 0x00 0x00 0x00 0x1010 0x63 0x73 0x6C 0x61 0x62 0x00 0x00 0x00 ΜΕΡΟΣ Γ Δίνεται η παρακάτω ρουτίνα σε C για την εύρεση ενός κόμβου με συγκεκριμένο κλειδί σε ένα δυαδικό δέντρο αναζήτησης (binary search tree BST). Υλοποιήστε την αντίστοιχη ρουτίνα σε assembly του MIPS. struct bst_node { unsigned int key; struct bst_node *left, *right; } bst_node_t; bst_node_t *bst_lookup(bst_node *root, unsigned int key) { if (root == NULL) return root; if (key == root->key) return root; struct bst_node *next = NULL; if (key < root->key) next = root->left; else next = root->right; } return bst_lookup(next, key); ΜΕΡΟΣ Δ (i) Δίνεται ο παρακάτω πίνακας με τα δεδομένα που βρίσκονται στη μνήμη για τις θέσεις 0x1000-0x109F.

Διεύθυνση Bytes (hex) 0x1000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0x1010 FF 00 FF 00 FF 00 00 00 00 00 00 08 FF 00 00 FF 0x1020 FF 00 01 09 FF 00 FF 00 03 00 00 00 00 FF 00 FF 0x1030 FF FF 00 00 00 00 00 00 00 FF 00 00 00 00 00 FF 0x1040 FF 00 00 00 07 04 00 00 00 00 00 00 FF 00 FF FF 0x1050 FF 00 FF 00 00 00 00 FF 00 00 FF 00 00 00 00 FF 0x1060 FF 00 FF 00 FF 00 00 00 00 FF 00 00 FF 00 00 FF 0x1070 FF 00 00 FF 00 00 00 00 00 00 00 00 00 00 00 FF 0x1080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0x1090 03 01 01 03 03 01 01 01 04 01 04 01 04 01 01 01 Οι θέσεις μνήμης 0x1000-0x108F αντιπροσωπεύουν το δισδιάστατο πλέγμα (16x9 στη συγκεκριμένη περίπτωση) του παιχνιδιού Bomberman. Το παιχνίδι παίζεται ως εξής: Ο bomberman ξεκινάει από το σημείο (1,1) του πλέγματος (διεύθυνση 0x1011 στο συγκεκριμένο πλέγμα). Προχωράει ένα βήμα την φορά προς οποιαδήποτε κατεύθυνση. Τα σημεία με τιμή 0xFF είναι οι βόμβες, στις οποίες αν πέσει ο bomberman το παιχνίδι τελειώνει. Για κάθε σημείο με τιμή 0x01-0x09 που συναντά, ο bomberman παίρνει τόσους πόντους όσους η τιμή του σημείου, την οποία και αλλάζει σε 0. Τα όρια του grid είναι ΠΑΝΤΑ βόμβες. Στις θέσεις μνήμης 0x1090-0x109F είναι αποθηκευμένες οι κινήσεις τις οποίες θα κάνει ο bomberman. Οι δυνατές κινήσεις είναι: 0x01 => μετακίνηση δεξιά. 0x02 => μετακίνηση αριστερά. 0x03 => μετακίνηση κάτω. 0x04 => μετακίνηση πάνω. Υλοποιήστε τη διαδικασία (procedure) bomberman σε assembly MIPS η οποία εκτελεί τις κινήσεις του bomberman. Η διαδικασία θα πρέπει να δέχεται τα εξής ορίσματα: στον $a0 ένα δείκτη στη μνήμη στο σημείο όπου είναι αποθηκευμένο το δισδιάστατο πλέγμα (0x1000 στο συγκεκριμένο παράδειγμα). στον $a1 το μήκος του grid (16 στο συγκεκριμένο παράδειγμα). στον $a2 ένα δείκτη στη μνήμη στο σημείο όπου είναι αποθηκευμένες οι κινήσεις που θα εκτελέσει ο bomberman (0x1090 στο συγκεκριμένο παράδειγμα). στον $a3 τον αριθμό των κινήσεων (16 στο συγκεκριμένο παράδειγμα). Τέλος η διαδικασία επιστρέφει ως αποτέλεσμα στον καταχωρητή $v0 το σύνολο των πόντων που μάζεψε ο bomberman ή -1 σε περίπτωση που έχει πέσει σε σημείο που περιέχει βόμβα. (ii) Εκτελέστε τη διαδικασία που υλοποιήσατε με βάση τα περιεχόμενα της μνήμης που δίνονται στον πιο πάνω πίνακα. Ποιά είναι η τιμή που επιστρέφει η συνάρτηση;

Για την υλοποίηση της άσκησης μπορείτε να χρησιμοποιήσετε τον MSIM, ένα emulator του MIPS οποίος αναπτύχθηκε από συμφοιτητές σας και διατίθεται από το εργαστήριο Υπολογιστικών Συστημάτων (CSLab). Στον emulator αυτό, μπορείτε να γράφετε MIPS assembly και να την εκτελείτε παρακολουθώντας τα περιεχόμενα των καταχωρητών και της μνήμης καθιστώντας έτσι ευκολότερη την παραγωγή και τον έλεγχο του απαιτούμενου κώδικα. Τον MSIM μπορείτε να τον κατεβάσετε από τη σελίδα των ασκήσεων του site του μαθήματος. Παραδοτέο της άσκησης θα είναι ένα ηλεκτρονικό κείμενο (pdf, docx ή odt) που θα περιέχει τους κώδικες assembly και των 3 μερών της άσκησης. Ο κώδικας θα πρέπει να περιέχει αναλυτικά σχόλια για την κατανόηση της λύσης σας από τους διδάσκοντες. Στο ηλεκτρονικό κείμενο να αναφέρετε στην αρχή τα στοιχεία σας (Όνομα, Επώνυμο, ΑΜ). Η άσκηση θα παραδοθεί ηλεκτρονικά στην ιστοσελίδα: http://www.cslab.ece.ntua.gr/courses/comparch/submit-tmima1 Δουλέψτε ατομικά. Έχει ιδιαίτερη αξία για την κατανόηση του μαθήματος να κάνετε μόνοι σας την εργασία. Μην προσπαθήσετε να την αντιγράψετε από άλλους συμφοιτητές σας.