Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής
|
|
- Βηθζαθά Αντωνοπούλου
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Μεταγλωττιστές Στοίβα Εκτέλεσης και Εγγραφήματα Δραστηριοποίησης Σε όλες σχεδόν τις μοντέρνες γλώσσες προγραμματισμού, μια συνάρτηση 1 μπορεί να έχει τοπικές μεταβλητές που δημιουργούνται με την είσοδο στη συνάρτηση. Πολλές κλήσεις της συνάρτησης αυτής μπορούν να είναι ταυτόχρονα ενεργές, και κάθε κλήση δημιουργεί τα δικά της αντίγραφα των τοπικών μεταβλητών. Για παράδειγμα, στη πιο κάτω συνάρτηση της γλώσσας C: int f (int x) { int y = x+x; if (y < 10) return f(y) else return y-1; } ένα νέο αντίγραφο της τοπικής μεταβλητής x (που ταυτόχρονα είναι και τυπική παράμετρος της συνάρτησης) δημιουργείται κάθε φορά που καλείται η συνάρτηση f, το οποίο και αρχικοποιείται από την καλούσα συνάρτηση. Εξ αιτίας των αναδρομικών κλήσεων της f, πολλά α- ντίγραφα της x υπάρχουν την ίδια στιγμή. Επίσης, ένα νέο αντίγραφο της τοπικής μεταβλητής y δημιουργείται με κάθε είσοδο στο σώμα της συνάρτησης f. Σε πολλές γλώσσες προγραμματισμού οι τοπικές μεταβλητές καταστρέφονται με την έξοδο από μια συνάρτηση. Επειδή η έξοδος από μια συνάρτηση συνεπάγεται προηγούμενη έξοδο από όλες τις συναρτήσεις που καλούνται από αυτήν, μπορούμε να συμπεράνουμε ότι οι κλήσεις συναρτήσεων έχουν συμπεριφορά LIFO (last-in-first-out). Εάν λοιπόν οι τοπικές μεταβλητές μιας συνάρτησης δημιουργούνται με την είσοδο και καταστρέφονται με την έξοδο μιας συνάρτησης, τότε μπορούμε να χρησιμοποιήσουμε μια δομή στοίβας για να τις αποθηκεύουμε στη μνήμη. Μερικές γλώσσες προγραμματισμού από την άλλη μεριά, δεν καταστρέφουν τις τοπικές μεταβλητές με την έξοδο από μια συνάρτηση. Κάτι τέτοιο συμβαίνει όταν μια γλώσσα υποστηρίζει ταυτόχρονα (α) φωλιασμένες συναρτήσεις και (β) συναρτήσεις που επιστρέφουν συναρτήσεις. Τέτοιες γλώσσες είναι για παράδειγμα οι ML και η Scheme. Για το υπόλοιπο της α- νάλυσης δε θα ασχοληθούμε με τέτοιες γλώσσες. Η στοίβα εκτέλεσης Η απλούστερη έννοια της στοίβας είναι ως μία δομή δεδομένων που υποστηρίζει δύο λειτουργίες, τη λειτουργία push και τη λειτουργία pop. Στην περίπτωσή μας όμως, οι τοπικές μεταβλητές δεν εισάγονται στην, ούτε εξάγονται από τη στοίβα μεμονωμένα, αλλά όλες μαζί. Επίσης, μετά την εισαγωγή των τοπικών μεταβλητών στη στοίβα, θέλουμε να μπορούμε να προσπελάσουμε τοπικές μεταβλητές που βρίσκονται κάτω από την κορυφή της στοίβας, είτε από αυτές που εισάγαμε στην τελευταία, είτε από αυτές που εισάγαμε σε προηγούμενη εισαγωγή. Έτσι, το απλό μοντέλο των δύο λειτουργιών δεν είναι κατάλληλο για το σκοπό μας. Αντίθετα, θεωρούμε τη στοίβα σαν έναν πίνακα, που προσπελαύνεται με τη βοήθεια ειδικού καταχωρητή, του δείκτη στοίβας (stack pointer) που η τιμή του δείχνει σε κάποια θέση στον πίνακα αυτόν. Οι θέσεις πέρα από την τιμή του δείκτη στοίβας περιέχουν τυχαίες άγνωστες 1 Με τον όρο συνάρτηση εννοούμε κάθε μονάδα ενός προγράμματος που ενεργοποιείται με κάποιο μηχανισμό κλήσης, με πιθανό πέρασμα παραμέτρων, και απενεργοποιείται με κάποιον αντίστοιχο μηχανισμό επανόδου στη μονάδα που την κάλεσε, με πιθανή επιστροφή αποτελέσματος.
2 τιμές, ενώ οι θέσεις πίσω από την τιμή του δείκτη στοίβας περιέχουν τιμές ενεργών μεταβλητών. Η στοίβα αυτή, που ονομάζεται στοίβα εκτέλεσης (run-time stack), συνήθως αυξάνεται μόνο στην κλήση μιας συνάρτησης, κατά μέγεθος τέτοιο, ώστε ο νέος χώρος που δημιουργείται να χωράει όλες τις τοπικές μεταβλητές της συνάρτησης, και μειώνεται ακριβώς πριν την έξοδο από τη συνάρτηση, κατά ίσο μέγεθος. Η περιοχή στη στοίβα που δεσμεύεται για τις τοπικές μεταβλητές μιας συνάρτησης ονομάζεται εγγράφημα δραστηριοποίησης (ΕΔ - activation record) της συνάρτησης. Εκτός των τοπικών μεταβλητών (και παραμέτρων) της συνάρτησης, το ΕΔ συνήθως αποθηκεύει βοηθητικές τιμές, όπως τη διεύθυνση επανόδου, την τιμή αποτελέσματος, το σύνδεσμο προσπέλασης, καθώς και προσωρινές μεταβλητές της συνάρτησης. Για ιστορικούς λόγους, οι στοίβες εκτέλεσης ξεκινούν σε υψηλές διευθύνσεις μνήμης και αυξάνονται προς τα κάτω, προς μικρότερες διευθύνσεις μνήμης. Η σχεδίαση του ΕΔ μιας συνάρτησης λαμβάνει υπ όψη τα ιδιαίτερα χαρακτηριστικά του συνόλου εντολών της τελικής γλώσσας, αλλά και την αρχική γλώσσα. Όμως, ο κατασκευαστής ενός επεξεργαστή συχνά προδιαγράφει τη μορφή των ΕΔ που πρέπει να υιοθετούνται από τους μεταγλωττιστές όλων των γλωσσών που χρησιμοποιούν τη στοίβα εκτέλεσης στον επεξεργαστή αυτόν. Μερικές φορές αυτή η μορφή δεν είναι και η καλύτερη για κάποιον συγκεκριμένο μεταγλωττιστή ή κάποια συγκεκριμένη γλώσσα, αλλά η χρήση αυτής της μορφής διευκολύνει στη σύνδεση ενός κώδικα με κάποια βιβλιοθήκη, ή με κώδικα που έχει γραφτεί σε άλλη αρχική γλώσσα. Ανεξάρτητα από τη μορφή του ΕΔ, η δέσμευση των θέσεων σε αυτό γίνεται από το μεταγλωττιστή, ανάλογα με τις ανάγκες μετάφρασης της κάθε συνάρτησης. Συνήθως, πρώτα δεσμεύονται οι θέσεις των τυπικών παραμέτρων της συνάρτησης, της διεύθυνσης επανόδου, της τιμής αποτελέσματος και του συνδέσμου προσπέλασης. Στη συνέχεια δεσμεύονται οι θέσεις των τοπικών μεταβλητών, με τη σειρά που εμφανίζονται στο σώμα της συνάρτησης, ή με ό- ποια σειρά βολεύει το μεταγλωττιστή. Στο τέλος δεσμεύονται θέσεις για προσωρινές μεταβλητές, που συνήθως εξυπηρετούν ανάγκες διάχυσης καταχωρητών, και οι οποίες εμφανίζονται στα τελευταία στάδια μετάφρασης, αφού δηλαδή έχει γίνει η δέσμευση όλων των άλλων θέσεων στο ΕΔ. Για κάθε θέση που δεσμεύεται από το μεταγλωττιστή, η μετατόπισή της από την αρχή του ΕΔ είναι σταθερή και γνωστή από τη στιγμή της δέσμευσης. Άσχετα αν η θέση του ΕΔ στη μνήμη δε μπορεί να είναι γνωστή στο μεταγλωττιστή, οι εντολές προσπέλασης θέσεων του ΕΔ μπορούν να παραχθούν, με διευθυνσιοδότηση σχετική με το δείκτη στοίβας. Ο δείκτης στοίβας λαμβάνει τιμές κατά την εκτέλεση του παραγόμενου κώδικα, από εντολές που παράγει ο μεταγλωττιστής στην είσοδο και στην έξοδο μιας συνάρτησης. Έτσι, στην είσοδο μιας συνάρτησης, ο δείκτης στοίβας μειώνεται κατά το μέγεθος του ΕΔ της συνάρτησης, ώστε να δείχνει πάντα στην κορυφή της στοίβας, και η στοίβα να μπορεί να δεχτεί το ΕΔ κάποιας άλλης συνάρτησης που καλείται από αυτήν. Αντίθετα, στην έξοδο από τη συνάρτηση, ο δείκτης στοίβας αυξάνεται αντίστοιχα. Η αρχική τιμή του δείκτη στοίβας δίνεται από το σύστημα κατά τη φόρτωση και εκκίνηση ενός προγράμματος. Καταχωρητές και στοίβα εκτέλεσης Κάθε μοντέρνος επεξεργαστής έχει ένα μεγάλο αριθμό καταχωρητών (συνήθως 32). Για την αύξηση της ταχύτητας των προγραμμάτων, είναι σκόπιμο να διατηρούμε τις τοπικές μεταβλητές, όπως και άλλες ενδιάμεσες τιμές, σε καταχωρητές αντί της στοίβας. Στους περισσότερους σύγχρονους επεξεργαστές, οι αριθμητικές εντολές προσπελαύνουν άμεσα τους καταχωρητές τους και όχι τη μνήμη. Η προσπέλαση της μνήμης απαιτεί ειδικές εντολές φόρτωσης και αποθήκευσης. Ακόμα και για αρχιτεκτονικές που υποστηρίζουν προσπέλαση της μνήμης μέσα από αριθμητικές εντολές, η προσπέλαση καταχωρητών είναι πιο γρήγορη. Κάθε επεξεργαστής έχει συνήθως ένα μοναδικό σύνολο καταχωρητών. Από την άλλη μεριά, πολλαπλές μονάδες ενός προγράμματος μπορούν να επιθυμούν ταυτόχρονη χρήση των καταχωρητών αυτών. Έστω για παράδειγμα μια συνάρτηση f που χρησιμοποιεί τον καταχωρητή r για να αποθηκεύσει μια τοπική μεταβλητή, και η οποία καλεί μια άλλη συνάρτηση g, η οποία επίσης χρησιμοποιεί τον ίδιο καταχωρητή για δικούς της υπολογισμούς. Τότε, η τιμή του r πρέπει να αποθηκευτεί στη στοίβα εκτέλεσης, πριν η g τον χρησιμοποιήσει, και να επανα-
3 φορτωθεί από τη στοίβα, αφού η g ολοκληρώσει τη χρήση του. Το ερώτημα που γεννάται είναι: ποιος κώδικας θα αποθηκεύσει και θα επαναφορτώσει τον r, ο κώδικας της f ή της g; Στην πρώτη περίπτωση λέμε ότι ο r είναι στην ευθύνη της καλούσας συνάρτησης, ενώ στη δεύτερη λέμε ότι ο r είναι στην ευθύνη της καλούμενης συνάρτησης. Στις περισσότερες αρχιτεκτονικές η παραπάνω διάκριση δε γίνεται μέσα από το υλικό, αλλά είναι αποτέλεσμα παραδοχής που ορίζεται μέσα από το εγχειρίδιο χρήσης του επεξεργαστή. Στους επεξεργαστές MIPS για παράδειγμα, η παραδοχή είναι ότι οι καταχωρητές πρέπει να διατηρούν την τιμή τους μέσα από κλήσεις συναρτήσεων (κι επομένως είναι στην ευθύνη της καλούμενης συνάρτησης), ενώ οι υπόλοιποι μπορούν να αλλάζουν τιμή μέσα από κλήσεις συναρτήσεων (κι επομένως είναι στην ευθύνη της καλούσας συνάρτησης). Η αποθήκευση και επαναφόρτωση καταχωρητών δεν είναι πάντα απαραίτητη. Εάν στο πιο πάνω παράδειγμα η f δηλαδή ο μεταγλωττιστής που μεταφράζει την f γνωρίζει ότι η τιμή κάποιας μεταβλητής x δε θα χρησιμοποιηθεί μετά την κλήση της g, μπορεί να την τοποθετήσει σε έναν καταχωρητή της ευθύνης της f, χωρίς να την αποθηκεύσει πριν την κλήση. Παρόμοια, αν η f έχει μια μεταβλητή i, η οποία χρησιμοποιείται ξανά μετά την κλήση της g, και πιθανά μετά από άλλες κλήσεις άλλων συναρτήσεων, μπορεί να τοποθετήσει την τιμή της σε κάποιον καταχωρητή της ευθύνης της καλούμενης συνάρτησης, οπότε αρκεί να αποθηκεύσει την αρχική τιμή του πριν την πρώτη χρήση του, και να την επαναφορτώσει μετά την τελευταία χρήση του. Η τιμή αυτή είναι η τιμή που ο καταχωρητής έχει από άλλη συνάρτηση που καλεί την f. Η νέα τιμή που αποδίδεται σε αυτόν από την f αποθηκεύεται και επαναφορτώνεται από όποια συνάρτηση καλείται μέσα από την f, αν και εφ όσον αυτή θέλει να τον χρησιμοποιήσει. Από τα παραπάνω καταλαβαίνουμε ότι η επιλογή του καταχωρητή για κάποια μεταβλητή μπορεί να επηρεάσει το συνολικό αριθμό των εντολών προσπέλασης μνήμης κάποιου προγράμματος. Ο αλγόριθμος δέσμευσης καταχωρητών πρέπει να διακρίνει τις δύο κατηγορίες καταχωρητών, ώστε να κάνει τη βέλτιστη δέσμευση. Πέρασμα παραμέτρων Από τη δεκαετία του 1970, οπότε καθιερώθηκε η χρήση της στοίβας εκτέλεσης για την τοποθέτηση των ΕΔ των συναρτήσεων, οι παραδοχές για το μηχανισμό κλήσης συναρτήσεων υ- παγορεύουν οι παράμετροι των συναρτήσεων να περνάνε μέσα από τη στοίβα. Κάτι τέτοιο όμως αυξάνει τις προσπελάσεις της μνήμης. Μελέτες αντιπροσωπευτικών προγραμμάτων έχουν δείξει ότι πολύ σπάνια μια συνάρτηση έχει πάνω από τέσσερις παραμέτρους, και σχεδόν ποτέ πάνω από έξι. Έτσι, στους σύγχρονους επεξεργαστές, οι παραδοχές αυτές έχουν τροποποιηθεί, και καθορίζουν ότι οι πρώτες k παράμετροι μιας συνάρτησης (όπου k είναι συνήθως 4 ή 6) περνάνε μέσα από καταχωρητές, και μόνο οι υπόλοιπες μέσα από τη στοίβα. Βέβαια, δημιουργείται το ερώτημα, τι θα γίνει αν μια συνάρτηση f που δέχτηκε μια παράμετρο μέσω ενός καταχωρητή r καλέσει άλλη συνάρτηση g. Τότε η παράμετρος που δέχτηκε θα πρέπει να αποθηκευτεί στη στοίβα. Έτσι, πώς μειώθηκε ο αριθμός προσπελάσεων στη μνήμη; Στο παραπάνω ερώτημα μπορούν να δοθούν τέσσερις διαφορετικές απαντήσεις, που μπορούν να ισχύσουν ανάλογα με την περίπτωση: 1. Κάποιες συναρτήσεις δεν περιέχουν άλλες κλήσεις συναρτήσεων. Τέτοιες συναρτήσεις, που μάλιστα καλούνται πολύ συχνά ίσως πιο συχνά από συναρτήσεις που καλούν άλλες συναρτήσεις, δε χρειάζεται να αποθηκεύσουν καμία παράμετρο στη στοίβα. Ακόμα περισσότερο, αν οι τοπικές μεταβλητές μιας τέτοιας συνάρτησης αντιστοιχούνται όλες σε καταχωρητές, τότε αυτή δε δημιουργεί καν ΕΔ στη στοίβα εκτέλεσης, κάτι που οδηγεί σε σημαντική εξοικονόμηση εντολών και προσπελάσεων μνήμης. 2. Κάποιοι μεταγλωττιστές δεσμεύουν καταχωρητές λαμβάνοντας υπ όψη τις κλήσεις συναρτήσεων, ώστε να δεσμεύουν διαφορετικούς καταχωρητές σε συναρτήσεις που καλούνται μέσα από άλλες. Τότε, η συνάρτηση f μπορεί να αποφύγει τη χρήση της στοίβας για την αποθήκευση των παραμέτρων της πριν την κλήση της g. 3. Πολλές φορές, όταν έρθει η στιγμή της κλήσης, η συνάρτηση f έχει τελειώσει με τη χρήση της παραμέτρου που πέρασε μέσα από τον καταχωρητή r. Έτσι δε θα χρειαστεί να την
4 αποθηκεύσει στη στοίβα, και οποιαδήποτε επόμενη χρήση του r δε θα σχετίζεται με την παράμετρο αυτή. 4. Μερικές αρχιτεκτονικές υποστηρίζουν παράθυρα καταχωρητών, που αλλάζουν με κάθε κλήση συνάρτησης, ώστε να μην απαιτείται χρήση της στοίβας για αποθήκευση των παραμέτρων με κάθε κλήση. Πέρα από την ανάγκη αποθήκευσης της τιμής του r εξ αιτίας της κλήσης της συνάρτησης g, η f αποθηκεύει τον r στη στοίβα εκτέλεσης και όταν το πρόγραμμα χρησιμοποιεί τη διεύθυνση της παραμέτρου. Οι καταχωρητές δεν έχουν διεύθυνση μνήμης, κι επομένως, αν ο κώδικας της f περιέχει κάποιο δείκτη (pointer) στην παράμετρο που πέρασε μέσα από τον καταχωρητή r, η f θα πρέπει να αποθηκεύσει την τιμή της παραμέτρου στη στοίβα, απ όπου θα μπορεί να διαβαστεί με αποδεικτοδότηση του αντίστοιχου δείκτη. Για εύκολη επίλυση του παραπάνω προβλήματος, μπορούν όλες οι παράμετροι να δεσμεύουν διαδοχικές θέσεις στο ΕΔ της συνάρτησης, άσχετα αν οι θέσεις αυτές τελικά χρησιμοποιούνται από τον κώδικα ή όχι. Κάτι τέτοιο κάνει η γλώσσα C, η οποία εκτός από δείκτες, υποστηρίζει και το μηχανισμό μεταβλητού αριθμού παραμέτρων, ο οποίος για να λειτουργήσει σωστά, προϋποθέτει ότι διαδοχικές παράμετροι βρίσκονται σε διαδοχικές θέσεις μνήμης. Πάντως, ένας καλύτερος τρόπος χρήσης της διεύθυνσης μιας παραμέτρου είναι με το μηχανισμό περάσματος κατ αναφορά. Με το μηχανισμό αυτό, το πρόγραμμα δεν έχει τη δυνατότητα άμεσης προσπέλασης της διεύθυνσης της παραμέτρου, κάτι που γίνεται στη C με τη βοήθεια δεικτών, αλλά μόνο έμμεσης προσπέλασης στη διεύθυνση αυτή μέσα από αναθέσεις στην παράμετρο. Το πέρασμα κατ αναφορά υλοποιείται απλά με πέρασμα της διεύθυνσης της πραγματικής παραμέτρου που προφανώς πρέπει να είναι τιμή αριστερής προσπέλασης. Κάθε αναφορά στην παράμετρο ως τιμή δεξιάς προσπέλασης απαιτεί μια παραπάνω προσπέλαση μνήμης για την αποδεικτοδότησή της, ενώ κάθε ανάθεση στην παράμετρο γίνεται με αποθήκευση στη διεύθυνση που πέρασε κατά την κλήση. Με το μηχανισμό αυτό εξασφαλίζεται ότι μετά την επιστροφή από τη συνάρτηση, δε θα παραμένει καμία ξεκρέμαστη αναφορά σε παράμετρό της. Διεύθυνση επανόδου Όταν μια συνάρτηση f ολοκληρώνει την εκτέλεσή της, πρέπει να επιστρέψει στη συνάρτηση που την κάλεσε. Έτσι, πρέπει να γνωρίζει σε ποια διεύθυνση κώδικα θα μεταφέρει τον έλεγχο ροής. Αν η διεύθυνση από την οποία έγινε η κλήση της f ήταν η διεύθυνση Α, τότε η ζητούμενη διεύθυνση είναι συνήθως η διεύθυνση Α+1, και λέγεται διεύθυνση επανόδου. Παλαιότερα, οι διευθύνσεις επανόδου αποθηκεύονταν στη στοίβα εκτέλεσης κατά τις κλήσεις συναρτήσεων. Σήμερα είναι πιο αποδοτικό κάτι τέτοιο να γίνεται μέσα από καταχωρητές. Εκτός από τη μείωση του αριθμού προσπελάσεων μνήμης, αυτό εξυπηρετεί και το υλικό, μια που ο μηχανισμός σύνδεσης, δηλαδή της αποθήκευσης της διεύθυνσης επανόδου, υλοποιείται ευκολότερα σε κάποιον καταχωρητή, παρά σε κάποια διεύθυνση μνήμης. Έτσι, οι σύγχρονοι επεξεργαστές, με κάθε εντολή κλήσης συνάρτησης, αποθηκεύουν τη διεύθυνση επανόδου σε κάποιον καταχωρητή. Από εκεί και πέρα, ισχύουν όσα αναφέρθηκαν πιο πάνω, για οποιαδήποτε ανάγκη αποθήκευσης της τιμής του καταχωρητή στη στοίβα. Ειδικότερα, αν ο καταχωρητής είναι προκαθορισμένος, όπως για παράδειγμα συμβαίνει με την ε- ντολή jal της αρχιτεκτονικής MIPS, τότε κάθε κλήση συνάρτησης μέσα από την f απαιτεί την αποθήκευση της τιμής του καταχωρητή πριν την κλήση, μια που διαφορετικά η τιμή του θα χαθεί. Μετά την επιστροφή στην f, η διεύθυνση επανόδου πρέπει να επαναφορτωθεί από τη στοίβα, ώστε να χρησιμοποιηθεί ως διεύθυνση προορισμού με την ολοκλήρωση της f για την επιστροφή στη συνάρτηση που την έχει καλέσει. Μεταβλητές του ΕΔ Σύμφωνα με όσα έχουμε πει πιο πάνω, οι μοντέρνες παραδοχές που χρησιμοποιούνται σε μια κλήση συνάρτησης απαιτούν οι παράμετροι να περνάνε μέσω καταχωρητών, η διεύθυνση επανόδου να αποθηκεύεται σε καταχωρητή, αλλά και η τιμή αποτελέσματος να αποθηκεύεται
5 σε καταχωρητή. Επίσης, πολλές από τις τοπικές μεταβλητές αντιστοιχούνται σε καταχωρητές. Τελικά, έχουμε πραγματική χρήση του ΕΔ στη στοίβα εκτέλεσης, μόνο αν είναι απαραίτητο, και αυτό θα συμβαίνει σε μια από τις ακόλουθες περιπτώσεις: Η τοπική μεταβλητή περνάει σε άλλη συνάρτηση κατ αναφορά, οπότε πρέπει να έχει διεύθυνση μνήμης. Η διεύθυνση μιας τοπικής μεταβλητής χρησιμοποιείται άμεσα από τον κώδικα, όπως για παράδειγμα με τον τελεστή & της γλώσσας C. Η τοπική μεταβλητή προσπελαύνεται από κάποια φωλιασμένη συνάρτηση, και ο μεταγλωττιστής δε λαμβάνει υπ όψη τις κλήσεις συναρτήσεων στη δέσμευση καταχωρητών. Η τιμή της μεταβλητής δε χωράει σε καταχωρητή, και ο μεταγλωττιστής δε χρησιμοποιεί πολλαπλούς καταχωρητές για αποθήκευση μιας τέτοιας τιμής. Η μεταβλητή δεν είναι βαθμωτή, οπότε είναι απαραίτητο να γίνουν υπολογισμοί για την εύρεση της διεύθυνσης κάποιου στοιχείου ή πεδίου αυτής, με βάση την αρχική διεύθυνση της μεταβλητής. Ο καταχωρητής που περιέχει την τιμή της μεταβλητής θα χρειαστεί για κάποια άλλη λειτουργία, όπως για παράδειγμα το πέρασμα κάποιας παραμέτρου, οπότε η τιμή αυτή πρέπει είτε να μεταφερθεί σε άλλον καταχωρητή, είτε να αποθηκευτεί στη στοίβα. Η παρούσα συνάρτηση έχει τόσες πολλές τοπικές μεταβλητές που είναι ταυτόχρονα ε- νεργές και δε χωράνε σε καταχωρητές. Τότε, ο αλγόριθμος δέσμευσης καταχωρητών δημιουργεί προσωρινές μεταβλητές που τις διαχέει στη στοίβα. Ας σημειωθεί ότι οι πιο πολλές από τις παραπάνω περιπτώσεις παρουσιάζονται μετά από τη δήλωση της αντίστοιχης τοπικής μεταβλητής. Έτσι, είναι αδύνατο να ξέρουμε τη στιγμή που συναντάμε μια δήλωση, αν η μεταβλητή που δηλώνεται θα χρησιμοποιήσει τη στοίβα εκτέλεσης ή όχι. Επομένως, είναι βολικό να δεσμεύουμε χώρο στο ΕΔ με κάθε δήλωση μεταβλητής, άσχετα αν αργότερα ο αλγόριθμος δέσμευσης καταχωρητών την αντιστοιχήσει σε κάποιον καταχωρητή και η θέση που δεσμεύτηκε δε χρησιμοποιηθεί. Σύνδεσμοι προσπέλασης Σε γλώσσες που επιτρέπουν φωλιασμένες δηλώσεις συναρτήσεων, είναι σύνηθες εσωτερικά δηλωμένες συναρτήσεις να αναφέρονται σε μη τοπικές μεταβλητές που είναι δηλωμένες σε εξωτερικές συναρτήσεις. Για παράδειγμα, στον κώδικα Pascal: type tree = record key: string; left: ^tree; right: ^tree; procedure prettyprint(tree : tree); var output: string; procedure write(s : string); output := concat(output,s); procedure show(n : integer; t : tree); procedure indent(s : string); var i: integer; for i := 1 to n do write( \t ); output := concat(output,s); write( \n ); if t = nil then indent(. ); else indent(t.key); show(n+1,t.left);
6 show(n+1,t.right); output := ; show(0,tree); print(output); η διαδικασία write αναφέρεται στη μη τοπική μεταβλητή, ενώ η διαδικασία indent αναφέρεται στις μη τοπικές μεταβλητές n και output. Για να επιτευχθεί τέτοια αναφορά, πρέπει οι φωλιασμένες διαδικασίες να έχουν προσπέλαση όχι μόνο στο δικό τους ΕΔ, αλλά και στα ΕΔ άλλων διαδικασιών. Μία μέθοδος που χρησιμοποιείται για την επίλυση αναφοράς μη τοπικών μεταβλητών είναι βασισμένη στους συνδέσμους προσπέλασης. Αν η γλώσσα προγραμματισμού υποστηρίζει στατικό δέσιμο στις κλήσεις συναρτήσεων, όπως συμβαίνει στην Pascal, ο σύνδεσμος προσπέλασης για μια συνάρτηση f είναι η διεύθυνση στη στοίβα εκτέλεσης στην οποία αρχίζει το ΕΔ της συνάρτησης που περικλείει την f. Εφ όσον η f είναι φωλιασμένη στη συνάρτηση αυτή, δεν είναι ορατή από άλλες συναρτήσεις, κι επομένως αν η f είναι ενεργοποιημένη, τότε θα είναι ενεργοποιημένη και η συνάρτηση που την περικλείει. Για την επίλυση αναφοράς από την f μιας μη τοπικής μεταβλητής που είναι δηλωμένη εξωτερικά της περικλείουσας συνάρτησης, θα πρέπει η κώδικας να ακολουθήσει επαναληπτικά τους συνδέσμους προσπέλασης, μέχρι να φτάσει στο επίπεδο φωλιάσματος όπου δηλώνεται η μεταβλητή. Ο τελευταίος σύνδεσμος προσπέλασης που διαβάζεται δίνει τη διεύθυνση στην οποία αρχίζει το ΕΔ στο οποίο είναι αποθηκευμένη η μεταβλητή. Έτσι, στον πιο πάνω κώδικα θα έχουμε για παράδειγμα: 1. Η διαδικασία prettyprint καλεί τη διαδικασία show, οπότε αποθηκεύει την αρχική διεύθυνση του δικού της ΕΔ στη θέση του συνδέσμου προσπέλασης της δεύτερης. 2. Η διαδικασία show καλεί τη διαδικασία indent, οπότε αποθηκεύει την αρχική διεύθυνση του δικού της ΕΔ στη θέση του συνδέσμου προσπέλασης της indent. 3. Η διαδικασία show καλεί τον εαυτό της αναδρομικά, οπότε αντιγράφει το δικό της σύνδεσμο προσπέλασης στη θέση του συνδέσμου προσπέλασης στο ΕΔ της αναδρομικής κλήσης. 4. Η διαδικασία indent αναφέρεται στη μη τοπική μεταβλητή n, η οποία είναι δηλωμένη στη διαδικασία show. Η αναφορά γίνεται σε διεύθυνση σχετική με την τιμή του δικού της συνδέσμου προσπέλασης, ο οποίος δείχνει στο ΕΔ της διαδικασίας show. Η μετατόπιση στην προσπέλαση είναι γνωστή στο μεταγλωττιστή από τη μετάφραση της τελευταίας. 5. Η διαδικασία indent καλεί τη διαδικασία write. Εφ όσον η write περιέχεται στην prettyprint και όχι στην indent, ο σύνδεσμος προσπέλασής της πρέπει να δείχνει στο ΕΔ της prettyprint. Ο κώδικας θα πρέπει να ακολουθήσει το σύνδεσμο προσπέλασης της indent στο ΕΔ της show, ώστε να αντιγράψει στη θέση του συνδέσμου προσπέλασης της write τον σύνδεσμο προσπέλασης της show, που είναι στο ίδιο βάθος φωλιάσματος με την write. Και η show και η write περικλείονται από την ίδια διαδικασία prettyprint, αλλιώς η write δε θα ήταν ορατή στην indent. 6. Η διαδικασία indent αναφέρεται στη μη τοπική μεταβλητή output, η οποία είναι δηλωμένη στη διαδικασία prettyprint. Για να βρει τη μεταβλητή αυτή, ακολουθεί το σύνδεσμο προσπέλασής της στο ΕΔ της show, απ όπου ακολουθεί το σύνδεσμο προσπέλασης της show στο ΕΔ της prettyprint. Η αναφορά τώρα μπορεί να γίνει σε διεύθυνση σχετική με την τιμή του τελευταίου συνδέσμου προσπέλασης που διάβασε. Από τα παραπάνω συμπεραίνουμε ότι σε γλώσσες που υποστηρίζουν φωλιασμένες συναρτήσεις με στατικό δέσιμο, σε κάθε κλήση συνάρτησης και σε κάθε αναφορά σε μη τοπική μεταβλητή ο κώδικας πρέπει να υλοποιεί μια αλυσίδα από μηδέν ή περισσότερες αναγνώσεις από τη στοίβα εκτέλεσης διαδοχικών συνδέσμων προσπέλασης. Το μήκος της αλυσίδας είναι η διαφορά στο βάθος φωλιάσματος των συναρτήσεων που εμπλέκονται στην κλήση ή στην α- ναφορά στη μεταβλητή.
7 Αν από την άλλη μεριά η γλώσσα προγραμματισμού υποστηρίζει δυναμικό δέσιμο στις κλήσεις συναρτήσεων, η επίλυση αναφοράς σε μη τοπικές μεταβλητές είναι παρόμοια με την παραπάνω, μόνο αν για κάθε τέτοια αναφορά υπάρχει μόνο μία πιθανή αλυσίδα αναγνώσεων που να οδηγούν στο ΕΔ όπου επιλύεται η αναφορά. Διαφορετικά, και επειδή το δέσιμο γίνεται στο χρόνο εκτέλεσης, ο μεταγλωττιστής δε μπορεί να ξέρει ποιο δρόμο θα ακολουθήσει στις διαδοχικές αναγνώσεις, κι επομένως απαιτείται άλλη, περισσότερη πολύπλοκη μέθοδος για την επίλυση της αναφοράς, η οποία επιδρά σε ολόκληρο το μηχανισμό κλήσης συναρτήσεων. Στην απλή περίπτωση μίας πιθανής αλυσίδας αναγνώσεων, μπορούμε να χρησιμοποιήσουμε τη μέθοδο του συνδέσμου προσπέλασης, με τη διαφορά ότι η ενημέρωση του συνδέσμου σε κάθε κλήση δε γίνεται με βάση το βάθος φωλιάσματος, αλλά με βάση το βάθος κλήσης. Από τη στιγμή που η αλυσίδα που πρέπει να ακολουθηθεί είναι μοναδική, ο μεταγλωττιστής ξέρει πόσες εντολές ανάγνωσης πρέπει να παράγει, ώστε ο κώδικας να φτάσει το ζητούμενο ΕΔ.
Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 11 ο Γεννήτορας Τελικού Κώδικα Ο γεννήτορας τελικού κώδικα είναι το πιο κρίσιμο τμήμα του μεταγλωττιστή και αντιμετωπίζει πολύπλοκα προβλήματα Βέλτιστη χρήση της αρχιτεκτονικής
Διαβάστε περισσότεραΠρογραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec03 18/02/2019
Σχεδίαση Γλωσσών Προγραμματισμού Εαρινό Εξάμηνο 2018-2019 Lec03 18/02/2019 Γλώσσες με δομή Block Γλώσσες με δομή Block Απλό μοντέλο Μηχανής Εκτέλεσης Διαχείριση Μνήμης Εμβέλεια και διάρκεια ζωής Εμβέλεια
Διαβάστε περισσότεραΚεφάλαιο 10 ο Υποπρογράµµατα
Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 7-9 Ενότητα 7: Ενδιάμεσος κώδικας Άσκηση 7-1: Θεωρήστε τη γλώσσα προγραμματισμού C με τη γνωστή γραμματική
Διαβάστε περισσότεραΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης
Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει
Διαβάστε περισσότεραΕισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 3-4: Προγραμματισμός MIPS Προγραμματισμός σε Συμβολική Γλώσσα Η συμβολική γλώσσα: δεν έχει τύπους, δεν έχει δηλώσεις μεταβλητών, δεν έχει δομές ελέγχου, δεν έχει εντολές βρόχων,
Διαβάστε περισσότεραΚεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει
Διαβάστε περισσότεραΟργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών. Μανόλης Γ.Η.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Οργάνωση Υπολογιστών Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών Μανόλης Γ.Η. Κατεβαίνης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting)
Εγγραφές Δραστηριοποίησης Jackson Pollock, The Key, 1946 (action painting) Κωστής Σαγώνας Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ
ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης
Διαβάστε περισσότεραΚεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος
Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης
Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει
Διαβάστε περισσότεραΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών
ΗΜΥ 213 - Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών ΠαρουσίασηΕργαστηρίου 5 ιδάσκοντες: Νικόλας Στυλιανίδης Γιώργος Ζάγγουλος
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός
Διαβάστε περισσότεραprocedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }
Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΟρισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ
ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών Παρουσίαση Εργαστηρίου 5 ιδάσκων: ρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας
Διαβάστε περισσότεραChapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Διαβάστε περισσότεραΚεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος
Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.
Διαβάστε περισσότεραΠροβλήματα, αλγόριθμοι, ψευδοκώδικας
Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΠρογραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται
Διαβάστε περισσότεραChapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότερα; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Δομή Εντολών και Παραδείγματα) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική
Διαβάστε περισσότεραΕργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.
Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 4 Εαρινό Εξάμηνο 2012-2013 Στόχοι του εργαστηρίου Χρήση στοίβας Συναρτήσεις ΠΡΟΣΟΧΗ: Αρχίστε νωρίς
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού Μεταγλωττιστές
Γλώσσες Προγραμματισμού Μεταγλωττιστές Παραγωγή Τελικού Κώδικα Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Παραγωγή Τελικού κώδικα. Οργάνωση μνήμης Εγγραφήματα Δραστηριοποίησης
Διαβάστε περισσότεραΑρχιτεκτονική Υπολογιστών
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 6: Διαδικασίες, Σωρός, Διαφανείς συναρτήσεις Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής
Διαβάστε περισσότεραΟργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική
Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων
Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις
Διαβάστε περισσότεραPascal. 15 Νοεμβρίου 2011
Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε
Διαβάστε περισσότεραChapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.
Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση:
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο
Γιώργος Δημητρίου Μάθημα 9 ο Ενδιάμεσος Κώδικας Απεικόνιση ανάμεσα στον αρχικό και στον τελικό κώδικα Γραμμικές αναπαραστάσεις: Ενδιάμεσος κώδικας πλησιέστερα στον τελικό ευκολότερη παραγωγή τελικού κώδικα
Διαβάστε περισσότεραΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραΟι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε
Διαβάστε περισσότεραΔομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα Η μνήμη του υπολογιστή Η κύρια μνήμη (main memory - RAM) του υπολογιστή κρατάει τα δεδομένα για την εκτέλεση των προγραμμάτων.
Διαβάστε περισσότερα{ int a = 5; { int b = 7; a = b + 3;
Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 1: Γλώσσες με δομή block Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
Διαβάστε περισσότεραTO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ
Μάθημα 7 - Υποπρογράμματα Εργαστήριο 11 Ο TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ Βασικές Έννοιες: Υποπρόγραμμα, Ανάλυση προβλήματος, top down σχεδίαση, Συνάρτηση, Διαδικασία, Παράμετρος, Κλήση συνάρτησης, Μετάβαση
Διαβάστε περισσότεραΣου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.
AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία
Διαβάστε περισσότεραΠρογραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος
Προγραμματισμός Η/Υ Συναρτήσεις & Υποπρογράμματα ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος Τμηματικός Προγραμματισμός Η επίλυση ενός προβλήματος διευκολύνεται
Διαβάστε περισσότεραΕγγραφές ραστηριοποίησης
Εγγραφές ραστηριοποίησης Ερώτηση για δέσιµο Κατά την εκτέλεση του προγράµµατος, οι µεταβλητές δένονται (δυναµικά) µε τιµές Οι τιµές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι µεταβλητές πρέπει
Διαβάστε περισσότεραΕντολές γλώσσας μηχανής
Εντολές γλώσσας μηχανής Στον υπολογιστή MIPS η εντολή πρόσθεσε τα περιεχόμενα των καταχωρητών 17 και 20 και τοποθέτησε το αποτέλεσμα στον καταχωρητή 9 έχει την μορφή: 00000010001101000100100000100000 Πεδία
Διαβάστε περισσότεραΑναδρομή. ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 6. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 6 Αναδρομή Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Υπολογισμός Παραγοντικού n! n! = 1*2..(n-1)*n = if n
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Άσκηση 6: Ασκήσεις Εξαμήνου Μέρος Β Νοέμβριος 2016 Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση ενός
Διαβάστε περισσότερα2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008
Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει
Διαβάστε περισσότεραΑρχιτεκτονικές Συνόλου Εντολών (ΙΙ)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Δομή Εντολών και Παραδείγματα) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για
Διαβάστε περισσότεραΑναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής
Αναδροµή Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής 1 Αναδροµή Βασική έννοια στα Μαθηµατικά και στην Πληροφορική.
Διαβάστε περισσότεραΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ
ΑΡΧΗ 1 ης ΣΕΛΙΔΑΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Επιμέλεια: Ομάδα Διαγωνισμάτων από Το στέκι των πληροφορικών Θέμα 1 ο Α. Να χαρακτηρίσετε κάθε μία από
Διαβάστε περισσότεραΚεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ
Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να
Διαβάστε περισσότεραΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Διαβάστε περισσότεραΛύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),
Διαβάστε περισσότεραΣυναρτήσεις-Διαδικασίες
ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 4 Συναρτήσεις-Διαδικασίες Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 Διαδικασίες (procedures) Γνωστές και σαν υπορουτίνες (subroutines)
Διαβάστε περισσότεραΚατ οίκον Εργασία 3 Σκελετοί Λύσεων
Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση
Διαβάστε περισσότεραΑλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Διαβάστε περισσότεραΑΕΠΠ Ερωτήσεις θεωρίας
ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος
Διαβάστε περισσότεραΠροηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος
Προηγμένοι Μικροεπεξεργαστές Έλεγχος Ροής Προγράμματος Control Flow εντολές Jump related JMP Jcc (JZ, JNZ, JB, JNB etc) JCXZ, JECXZ LOOP LOOPE, LOOPNE Procedure related CALL RET INT IRET INTO ENTER LEAVE
Διαβάστε περισσότεραΠρογραμματισμός ΙI (Θ)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Άσκηση 6: Ασκήσεις Χειμερινού Εξαμήνου 2017-2018 (μέρος Β ) Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση
Διαβάστε περισσότεραΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.
ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΘΕΜΑ Α ΚΥΡΙΑΚΗ 16/04/2014- ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΝΝΕΑ (9) ΕΚΦΩΝΗΣΕΙΣ Α1. Να χαρακτηρίσετε
Διαβάστε περισσότεραΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1
Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι
Διαβάστε περισσότεραMIPS functions and procedures
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης MIPS functions and procedures Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων
ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές
Διαβάστε περισσότεραΔείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8
Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος
Διαβάστε περισσότεραΠρογραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται
Διαβάστε περισσότεραΚεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Κεφάλαιο 7: Υποπρογράμματα Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υποπρογραμμάτων (subprogram abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη
Διαβάστε περισσότεραΥποστήριξη διαδικασιών στο υλικό των υπολογιστών
Βήματα στην εκτέλεση μιας διαδικασίας (procedure) 1. Τοποθέτηση παραμέτρων 2. Μεταβίβαση ελέγχου στη διαδικασία 3. Λήψη πόρων αποθήκευσης 4. Εκτέλεση επιθυμητής εργασίας 5. Τοποθέτηση αποτελέσματος σε
Διαβάστε περισσότεραAlternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,
ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μια σημείωση από τον Α. Δελή για το άρθρο: W. Pugh, Skip Lists: A Probabilistic Alternative to Balanced Trees, Comms of the ACM, 33(), June 10,
Διαβάστε περισσότεραΑναδρομή Ανάλυση Αλγορίθμων
Αναδρομή Ανάλυση Αλγορίθμων Παράδειγμα: Υπολογισμός του παραγοντικού Ορισμός του n! n! = n x (n - 1) x x 2 x 1 Ο παραπάνω ορισμός μπορεί να γραφεί ως n! = 1 αν n = 0 n x (n -1)! αλλιώς Παράδειγμα (συνέχ).
Διαβάστε περισσότεραΔομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Δομές Δεδομένων
Διαβάστε περισσότεραΠρογραμματισμός ΙI (Θ)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα
Διαβάστε περισσότεραΣτοιχεία αρχιτεκτονικής μικροεπεξεργαστή
Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική
Διαβάστε περισσότεραΛειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Λειτουργικά
Διαβάστε περισσότεραΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT
ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT ΘΕΩΡΙΑ Στο project αυτό έχουμε υλοποιήσει τις βασικές συναρτήσεις της stdlib της C malloc και free Η συνάρτηση malloc είναι η void *malloc(int
Διαβάστε περισσότερα6. Επιστροφή ελέγχου στο σημείο εκκίνησης
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών Βήματα στην εκτέλεση μιας διαδικασίας (procedure) 1. Τοποθέτηση παραμέτρων 2. Μεταβίβαση ελέγχου στη διαδικασία 3. Λήψη πόρων αποθήκευσης 4. Εκτέλεση επιθυμητής
Διαβάστε περισσότεραΕπικοινωνία:
Σπύρος Ζυγούρης Καθηγητής Πληροφορικής Επικοινωνία: spzygouris@gmail.com Πως ορίζεται ο τμηματικός προγραμματισμός; Πρόγραμμα Εντολή 1 Εντολή 2 Εντολή 3 Εντολή 4 Εντολή 5 Εντολή 2 Εντολή 3 Εντολή 4 Εντολή
Διαβάστε περισσότεραΜάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.
Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε. 5.1 Το ρολόι Κάθε μία από αυτές τις λειτουργίες της Κ.Μ.Ε. διαρκεί ένα μικρό χρονικό διάστημα. Για το συγχρονισμό των λειτουργιών αυτών, είναι απαραίτητο κάποιο ρολόι.
Διαβάστε περισσότεραΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης
ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.
Διαβάστε περισσότεραΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.
ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ ΕΠΑΛ (ΟΜΑΔΑ Α ) & ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΕΠΑΛ (ΟΜΑΔΑ Β ) ΘΕΜΑ Α A1. ΚΥΡΙΑΚΗ 16/04/2014- ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΔΕΚΑΠΕΝΤΕ (15) ΑΠΑΝΤΗΣΕΙΣ 1-Σωστό
Διαβάστε περισσότεραΚλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )
ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση
Διαβάστε περισσότεραΕργαστήριο 5. Εαρινό Εξάμηνο
Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 5 Εαρινό Εξάμηνο 2012-2013 Στό χόι τόυ εργαστηρι όυ Χρήση στοίβας Αναδρομή Δομές δεδομένων Δυναμική
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές
Αρχές Γλωσσών Προγραμματισμου Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2015 Χρήστος Νομικός ( Τμήμα Μηχανικών Αρχές Η/Υ και Γλωσσών Πληροφορικής Προγραμματισμου Πανεπιστήμιο
Διαβάστε περισσότεραΗ πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης
Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου
Διαβάστε περισσότερα1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr 1 η ΑΣΚΗΣΗ ΣΤΗΝ
Διαβάστε περισσότεραΔιαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4
ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι Διάλεξη 4 Διαδικασίες Ι Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Εισαγωγή στους Η/Υ (ΗΥ134) 1 Διευθυνσιοδότηση διακλαδώσεων
Διαβάστε περισσότεραΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες
Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη
Διαβάστε περισσότερα