Lab 3 Εξοικείωση με μετάφραση C σε Assembly Πρώτη γνωριμία με εντολές Assembly
Κώδικας Άσκησης Κατεβάστε το project Lecture 3 από το eclass Περιγράψτε συνοπτικά την λειτουργία του Διαμορφώστε το περιβάλλον ώστε να χρησιμοποιήσετε τον Simulator του περιβάλλοντος
Μέτρηση ταχύτητας κώδικα Ορίστε εξωτερική συχνότητα ρολογιού 12ΜΗz Ορίστε breakpoints όπως φαίνεται Μέσω των Ενδείξεων States και Sec μπορούμε να γνωρίζουμε πόσοι κύκλοι ρολογιού έχουν περάσει και πόσα sec Με βάση τα breakpoints επαληθεύσατε ότι όντως το ρολόι είναι 12MHz Αυξήστε το ρολόι σε 24ΜΗz και πραγματοποιήστε την ίδια επαλήθευση
Αποθήκευση μεταβλητών Μέσω του debug περιβάλλοντος εντοπίστε και σημειώστε Που αποθηκεύονται οι μεταβλητές result, z1, z2, x, y Με ποιες εντολές Assembly γίνεται η αποθήκευση MOVS Reg, #Value Ορίστε άλλες δύο int μεταβλητές (π.χ. y1,y2) Που αποθηκεύονται οι νέες μεταβλητές; Ορίστε έναν πίνακα και αποδώστε τιμές με τις ακόλουθες εντολές int pinax[5]; pinax[0] = 0; pinax[1] = 1; pinax[2] = 2; pinax[3] = 3; pinax[4] = 4; Σε ποιες διευθύνσεις αποθηκεύονται τα στοιχεία του πίνακα;
Κλήση συναρτήσεων Η κλήση της συνάρτησης func1 αντιστοιχίζεται στις εντολές από διεύθυνση 0x21A – 0x222 Ποια η λειτουργία των εντολών MOV και LDR MOV Μεταφορά LDR Φόρτωση τιμής από μνήμη Γιατί προηγούνται της κλήσης; BL Βranch Link.W 32bit instruction Που βρίσκεται η πρώτη εντολή της func1; Επαληθεύστε το με step-by-step execution Ποια θα είναι η τιμή του R14 μετά την εκτέλεση της BL.w func1; Επαληθεύστε το
Ανάλυση Συνάρτησης – Επιστροφή από συνάρτηση Ποιες εντολές Assembly αποτελούν το σώμα της συνάρτησης func1; Με ποια εντολή Assembly γυρνάμε από μια συνάρτηση; Καταγράψτε όλες τις Assembly εντολές της func2
Ανάλυση Συνάρτησης – Επιστροφή από συνάρτηση Ποιες εντολές Assembly αποτελούν το σώμα της συνάρτησης func1; Με ποια εντολή Assembly γυρνάμε από μια συνάρτηση; Καταγράψτε όλες τις Assembly εντολές της func2
Ορισμός νέας συνάρτησης – Αντιστοίχηση σε εντολές Assembly Ορίστε νέα συνάρτηση η οποία να πραγματοποιεί πολλαπλασιασμό Καλέστε την συνάρτηση πολλαπλασιάσου με ορίσματα τα z1 και z2 Σε ποια διεύθυνση αποθηκεύεται η νέα συνάρτηση; Καταγράψτε όλες τις εντολές που απαρτίζουν την συνάρτηση που ορίσατε Υποστηρίζει η ALU του CortexM0 πολλαπλασιασμό; Κάντε τα ίδια για διαίρεση Υποστηρίζει η ALU του CortexM0 διαίρεση;