HY - 340 Γλώσσες και Μεταφραστές Φροντιστήριο Runtime Environment.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
Advertisements

-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
Βήματα στην εκτέλεση μιας διαδικασίας (procedure) 1.Τοποθέτηση παραμέτρων 2.Μεταβίβαση ελέγχου στη διαδικασία 3.Λήψη πόρων αποθήκευσης.
Πολυδιάστατοι Πίνακες, Δομές, Ενώσεις
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα.
Μάθημα : Βασικά Στοιχεία της Γλώσσας Java
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Γλώσσα Προγραμματισμού
ΜΑΘ-3122/106 Προγραμματισμός
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 5: Επαναληπτικές και εξωτερικές συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών11-1 Παραγωγή Ενδιάμεσου Κώδικα Ο ενδιάμεσος κώδικας αποτελεί τη γλώσσα επικοινωνίας ανάμεσα στο εμπρόσθιο.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Stacks - Στοίβες.
HY Γλώσσες και Μεταφραστές Φροντιστήριο Runtime Environment.
ΣΥΝΑΡΤΗΣΕΙΣ.
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
Templates Standard Template Library (STL) Exceptions Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμήμα Εφαρμοσμένης Πληροφορικής.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
1 Κλήσεις συναρτήσεων και προγραμματισμός με μηχανές καταστάσεων.
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΜΑΘ3122/106 – Γλώσσα προγραμματισμούΞενοφών Ζαμπούλης ΜΑΘ3122/106 Γλώσσα προγραμματισμού Συναρτήσεις.
ΗΥ-340 – Γλώσσες και Μεταφραστές Φροντιστήριο Παραγωγή τελικού κώδικα.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Spring 2007 Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας 1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Virtual Machine.
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
ΗΥ-340 – Γλώσσες και Μεταφραστές Φροντιστήριο Παραγωγή τελικού κώδικα.
Δομές Δεδομένων και Αρχεία Ενότητα 7: Η δομή Στοίβα Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας.
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις (μέρος δεύτερο) και Μεταβλητές.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
MIPS: Σύνολο εντολών, γλώσσα μηχανής & μεθοδολογία σχεδίασης
Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος
Η Γλώσσα Pascal Υποπρογράμματα
Εισαγωγή στον Προγ/μό Υπολογιστών
Θέματα Φεβρουαρίου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
ΠΙΝΑΚΕΣ Οι δομές δεδομένων «Στοίβα» & «Ουρά»
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Μεταγράφημα παρουσίασης:

HY Γλώσσες και Μεταφραστές Φροντιστήριο Runtime Environment

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας2 Spring 2007 Οργάνωση Μνήμης (1/3) Για τις μεταβλητές καθολικής εμβέλειας, αφού το πλήθος τους είναι γνωστό σε compile-time, δεσμεύεται για αυτές χώρος σε ένα συνεχόμενο τμήμα μνήμης. Ένας καταχορητής (globalmem) της εικονικής μηχανής θα υποδεικνύει την αρχική διεύθυνση αυτού του τμήματος. Μπορούμε να κάνουμε reference μια global μεταβλητή ως MEM[globalmem + offset].

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας3 Spring 2007 Οργάνωση Μνήμης (2/3) Τα τυπικά ορίσματα και οι τοπικές μεταβλητές κάθε συνάρτησης έχουν νόημα μόνο μέσα στο context μιας κλήση της συνάρτησης. Επίσης, εάν υπάρχει αναδρομική κλήση κάποιας συνάρτησης θα πρέπει να παρέχεται ένα «περιβάλλον» για κάθε ενεργοποίηση της συνάρτησης.

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας4 Spring 2007 Οργάνωση Μνήμης (3/3) Επομένως για κάθε καλούμενη συνάρτηση δεσμεύουμε μνήμη at run-time σε κάθε κλήση της. Ο λόγος είναι ότι στην alpha η συνάρτηση που θα κληθεί ίσως να μην είναι γνωστή σε compile- time. Το ίδιο συμβαίνει και στην C, C++ (π.χ. branches, late binding, dispatch table κτλ.).

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας5 Spring 2007 Δέντρο ενεργοποίησης Παράδειγμα function fact (n) { if (n == 1) return 1; else return n * fact(n-1); } fact(5) fact(4) fact(3) fact(2) fact(1) Δέντρο ενεργοποίησης Κάθε ενεργοποίηση απαιτεί διαφορετικό περιβάλλον, το μέγεθος του οποίου ισούται με: αριθμός ορισμάτων + αριθμός τοπικών μεταβλητών

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας6 Spring 2007 Activation records (1/6) Κατά την κλήση μιας συνάρτησης, παραχωρείται μνήμη δυναμικά (και γίνεται push στην στοίβα), ενώ μετά το τέλος της κλήσης αυτή η μνήμη απελευθερώνεται (και γίνεται pop από την στοίβα το αντίστοιχο active record).

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας7 Spring 2007 Activation records (2/6) Παράδειγμα fract(5) fract(4) fract(3) fract(2) fract(1) Δέντρο ενεργοποίησης fract(1) fract(2) fract(3) fract(4) fract(5) ……. Στοίβα Η κλήση που έγινε τελευταία, βρίσκεται υψηλότερα στην στοίβα

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας8 Spring 2007 Activation records (3/6) Παράδειγμα (code) function f (x, y) { z = x * y; if (z == 10) { z = 1; } return z; } i = f (j, k); 1:funcstart f 2:mul x y z 3:if_eq z :jump 6 5:assign 1 z 6:return z 7:funcendf 8:param k 9:param j 10:call f 11:getretval _t1 12:assign _t1 i

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας9 Spring 2007 Activation records (4/6) Παράδειγμα (stack) k j actual_args ret_address stack saved_topsp saved_top z 108 top topsp function f (x, y) { z = x * y; if (z == 10) { z = 1; } return z; } i = f (j, k); old_top old_topsp

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας10 Spring 2007 Activation records (5/6) Παράδειγμα 2 (stack) k j actual_args ret_address Στιγμιότυπο της στοίβας όταν το PC βρίσκεται μέσα στο body της ανώνυμης συνάρτησης που ορίζεται μέσα στην g() saved_topsp saved_top w 109 z 108 top topsp function g (a) { return function (x){ tmp = 2; return (tmp – x); } (a); } function f (x, y) { z = 2*x + y; w = z – x/y; g(w); return z; } i = f (j, k); w 110 ret_address 112 actual_args 111 saved_top 113 a 115 saved_topsp 114 f g ret_address 117 actual_args 116 saved_top 118 tmp 120 saved_topsp t1 stack

Γ. Γεωργαλής, Σ. Δουμπουλάκης, Μ. Ζηδιανάκης, Θ. Μπουρδένας11 Spring 2007 n actual_args ret_address saved_topsp saved_top n actual_args ret_address saved_topsp saved_top n actual_args ret_address saved_topsp saved_top Activation records (6/6) Παράδειγμα 3 (recursion) n actual_args ret_address Στιγμιότυπο της στοίβας όταν το PC βρίσκεται μέσα στο body της αναδρομικής fact() με όρισμα n=1 (αρχική κλήση n=4) saved_topsp saved_top top topsp f(4) stack function fact (n) { if (n == 1) return 1; else return n * fact(n-1); } x = fact(4); 105 f(3) f(2) f(1)