0. MIPS Assembly
[0.0] - MIPS assembly
[0.1] - Πίνακας και ασκήσεις εδώ
[0.2] - Εντολές αναλυτικά εδώ
1. MIPS online emulator
[1.0] - Διαθέσιμος εδώ
Υποστηριζόμενες εντολές
- **Memory access**: lb, lbu, lh, lhu, lui, lw, sb, sh, sw
- **Arithmetic operations**: addi, addiu, add, addu, sub, subu, slt, slti, sltu, sltiu, mul, mulu, div, divu
- **Logical operations**: and, andi, or, ori, xor, xori, nor, sll, sllv, srl, sra, srlv, srav
- **Jump**: j, jr, jal
- **Conditional branch**: beq, bne, blez, bgtz, bltz, bgez
- **Misc/Pseudo instructions**: nop, break, print prints, printm
2. Δραστηριότητα
[2.0] - Συμπλήρωση πίνακα εντολών που υποστηρίζονται από τον simulator εδώ
[2.1] - Συμπληρωμένη δραστηριότητα εδώ
3. Ασκήσεις
[3.0] Άσκηση 0 - Χρήση ακεραίων
Να γράψεις ένα πρόγραμμα σε MIPS assembly, το οποίο:
Θα φορτώνει τον ακέραιο αριθμό 20 σε ένα καταχωρητή
Θα φορτώνει τον ακέραιο αριθμό 10 σε ένα καταχωρητή
Θα υπολογίζει το άθροισμα των παραπάνω καταχωρητών.
Θα υπολογίζει τη διαφορά των παραπάνω καταχωρητών.
Θα υπολογίζει το γινόμενο των παραπάνω καταχωρητών.
Θα κάνει ολίσθηση μια θέση προς τα δεξιά του καταχωρητή στον οποίο είναι
αποθηκευμένος ο αριθμός 20.
Θα κάνει ολίσθηση δύο θέσεις προς τα αριστερά του καταχωρητή στον οποίο είναι
αποθηκευμένος ο αριθμός 10.
[3.1] Άσκηση 1 - Μέγεθος λέξης emulator
Δοκίμασε στον emulator τις παρακάτω εντολές:
li $a1,65535
και
li $a1,65536
Φόρτωσε και κάνε run. Τι παρατηρείς;
[3.2] Άσκηση 2 - Bitwise λογικές πράξεις
Να γράψεις ένα πρόγραμμα σε MIPS assembly, το οποίο:
Θα φορτώνει τον ακέραιο αριθμό 49 σε ένα καταχωρητή
Θα φορτώνει τον ακέραιο αριθμό 50 σε ένα καταχωρητή
Θα υπολογίζει την πράξη AND (bitwise) των παραπάνω αριθμών
Θα υπολογίζει την πράξη OR (bitwise) των παραπάνω αριθμών
Θα υπολογίζει την πράξη NOR (bitwise) των παραπάνω αριθμών
[3.3] Άσκηση 3 - Διακλαδώσεις (if)
Να γράψεις ένα πρόγραμμα σε MIPS assembly, το οποίο:
Θα δημιουργεί ένα κύριο μέρος προγράμματος με ετικέτα main:
Θα φορτώνει τον ακέραιο αριθμό 19 στον καταχωρήτη a1
Θα φορτώνει τον ακέραιο αριθμό 20 στον καταχωρήτη a2
Αμέσως μετά θα κάνει έλεγχο αν είναι ίσα τα περιεχόμενα των καταχωρητών a1 και a2 και αν είναι ίσα να πηγαίνει στο τμήμα προγράμματος με ετικέτα equal: αν δεν είναι ίσα να φορτώνει τον ακέραιο αριθμό 0 στον καταχωρητή a3 και να πηγαίνει στο τμήμα προγράμματος με ετικέτα end:
Στο τμήμα προγράμματος με ετικέτα equal: να φορτώνει τον ακέραιο αριθμό 1 στον καταχωρητή a3 και να πηγαίνει στο τμήμα προγράμματος με ετικέτα end:
Το τμήμα προγράμματος με ετικέτα end: να είναι άδειο (μια σκέτη ετικέτα).
