Αρχιτεκτονική Υπολογιστών - Εργαστήριο 02 από Μαρία - Ειρήνη Ταμπάκη, Επίβλεψη Μηνάς Δασυγένης

preview_player
Показать описание
Αρχιτεκτονική Υπολογιστών - Εργαστήριο 02 από Μαρία - Ειρήνη Ταμπάκη, Επίβλεψη Μηνάς Δασυγένης

Η μαγνητοσκόπηση έγινε το Μάρτιο του 2015 με την ολοκλήρωση του μαθήματος, υπό την επίβλεψή μου.

Δρ. Μηνάς Δασυγένης - Dr. Minas Dasygenis

Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών
Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Πανεπιστήμιο Δυτικής Μακεδονίας

Οι διαλέξεις, οι σημειώσεις, και οι ασκήσεις είναι διαθέσιμες
στη διεύθυνση:
Рекомендации по теме
Комментарии
Автор

COMMENT: Στο χρόνο 4:32 που υπολογίζονται τα Byte του κώδικα μηχανής, κάποιος παρατηρητικός θεατής μπορεί να μετρήσει όλα τα byte του machine code ένα προς ένα και να βρει ότι είναι 53. Όμως με αυτό τον τρόπο δε θα έχει συμπεριλάβει και τα κενά byte που βρίσκονται ανάμεσα στο data segment και στο code segment, και είναι byte που έχουν δοθεί στο συγκεκριμένο πρόγραμμα και δε μπορεί να τα χρησιμοποιήσει κανένα άλλο πρόγραμμα. Παρατηρούμε και εδώ το πρόβλημα του εσωτερικού κατακερματισμού, που οφείλεται στον τρόπο υπολογισμού της απόλυτης διεύθυνσης των 20bit από 2 καταχωρητές (τμήματος και μετατόπισης) των 16bit (CS * 10h+IP). Ως εκ τούτου, το κάθε τμήμα μπορεί να ξεκινήσει σε πολλαπλάσιο των 16 byte μακρύτερα από ένα άλλο (π.χ. το code segment ξεκινάει στο 20h, δηλαδή στο 32, ενώ το προηγούμενο τμήμα δεν τελειώνει στο byte 31 (0x1Fh), αλλά στο 0x1Dh (δηλαδή 2 byte πιο πριν). Για να υπολογίσουμε τη στατική μνήμη που χρησιμοποιεί ένα πρόγραμμα, αρκεί να δούμε στο listing την τελευταία διεύθυνση του τελευταίου byte, που στην περίπτωση μας είναι 0x36h ή 54, και επειδή η αρίθμηση ξεκινάει από το 0, έχουμε 55 byte. Βέβαια, αν θέλουμε να είμαστε 100% σωστοί, τότε θα πρέπει να σημειώσουμε ότι τα επόμενα byte μέχρι το επόμενο πολλαπλάσιο του 10h (του 16) δε μπορεί να χρησιμοποιηθούν από άλλο πρόγραμμα, και άρα τα Byte τελικά που χρησιμοποιούνται είναι από το 0 έως το αμέσως επόμενο πολλαπλάσιο του 16 από το 0x36h που είναι το 0x40h - 1 δηλαδή 0x3Fh (=63) και άρα 64byte αφού προσμετράμε και το byte στη διεύθυνση 0.

MinasDasygenis