Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών 6ο Μάθημα
Πολλαπλασιασμός MIPS Ο πολλαπλασιασμός με τον MIPS επιτυγχάνεται εύκολα με: Την εντολή mul: Συντάσσεται ως: mul $12, $10, $11 Πολλαπλασιάζει το περιεχόμενο του καταχωρητή $10 επί το περιεχόμενο του καταχωρητή $11 και τοποθετεί το αποτέλεσμα στον καταχωρητή $12
Διαίρεση στον MIPS Αντίστοιχα με τον πολλαπλασιασμό, υπάρχει η ανάλογη εντολή διαίρεσης για τον MIPS: div $12, $10, $11 Διαιρεί την τιμή του $10 διά την τιμή του $11 και τοποθετεί το αποτέλεσμα της διαίρεσης στον καταχωρητή $12
Παράδειγμα 1 Φτιάξτε ένα πρόγραμμα που να ζητάει από το πληκτρολόγιο δύο νούμερα “y” και “z” και να τα πολλαπλασιάζει και να τα διαιρεί μεταξύ τους.
Εντολές Συγκρίσεων και Διακλαδώσεων Περίληψη από τα προηγούμενα Εντολές CTI, Control Transfer Instructions – Εντολές Μεταφοράς Ελέγχου Αλλάζουν τη ροή του προγράμματος πάντοτε ή υπο συνθήκες σε μια άλλη εντολή ή στην επόμενη προς εκτέλεση εντολή (στην «από κάτω» ) Θυμηθείτε την εντολή jump (αλλαγή ροής προγράμματος χωρίς καμμία συνθήκη) Θυμηθείτε τις bne και beq (αλλαγή ροής προγράμματος υπό συνθήκη ΙΣΟΤΗΤΑΣ)
Εντολές Σύγκρισης «Μεγαλύτερο – Μικρότερο από ...» Όπως έχουμε δει, στις εντολές σύγκρισης ισότητας (branches) συγκρίνονται οι τιμές που έχουν απλά δύο καταχωρητές. Οι υπόλοιπες μορφές συγκρίσεων υλοποιούνται με ειδικές αριθμητικές εντολές σύγκρισης. Οι εντολές αυτές είναι παρόμοιες με τις εντολές πρόσθεσης και αφαίρεσης αλλά το αποτέλεσμά τους αποδίδεται με την μορφή Boolean
Εντολές Σύγκρισης «Μεγαλύτερο – Μικρότερο από ...» Αποτελέσματα τύπου Boolean Έχουν δύο πιθανά αποτελέσματα: 0 για ΨΕΥΔΕΣ 1 για ΑΛΗΘΕΣ Τα αποτελέσματα αυτά (0 ή 1) γράφονται στους (32bit) καταχωρητές μας σαν ακέραιοι όπως ακριβώς γνωρίζουμε με τους ακέραιους Αποθηκεύεται στο LSB (Last Significant Bit) το 0 ή το 1 και τα υπόλοιπα 3 bits συμπληρώνονται με μηδενικά
Εντολές Σύγκρισης «Μεγαλύτερο – Μικρότερο από ...» του MIPS slt $rd, $rs, $rt # “set less than” – Αριθμητική σύγκριση των καταχωρητών: $rs < $rt Το αποτέλεσμα τύπου Boolean, γράφεται στον καταχωρητή $rd
Εντολές Σύγκρισης «Μεγαλύτερο – Μικρότερο από ...» του MIPS slti $rd, $rs, imm # “set less than immidiate” - Αριθμητική σύγκριση καταχωρητή και προσημασμένης (sign – extended) σταθερής ποσότητας imm: $rs < imm Το αποτέλεσμα Boolean γράφεται στον καταχωρητή $rd
Παράδειγμα 2 Φτιάξτε ένα πρόγραμμα που: να ζητάει 2 αριθμούς x, y, να κάνει τη σύγκριση μεταξύ τους και να τυπώνει τον μεγαλύτερο αριθμό που δώσατε. Αν οι δύο αριθμοί είναι ίδιοι το πρόγραμμα να τυπώνει ότι τα δύο νούμερα είναι ίσα. Στη συνέχεια να γίνεται η σύγκριση του μεγαλύτερου αριθμού που δώσατε με το σταθερό νούμερο 5. Αν είναι μεγαλύτερό του, να κάνει και να τυπώνει το άθροισμα x + y Αν είναι μικρότερό του, να κάνει και να τυπώνει τον πολλαπλασιασμό x * y