Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Σχετικά έγγραφα
Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

Σειεζηέο, Δθθξάζεηο Πξνηάζεηο, Δληνιέο Διέγρνπ Ρνήο

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

Ανάπηςξη Δθαπμογών ζε Ππογπαμμαηιζηικό Πεπιβάλλον

Αντισταθμιστική ανάλυση

Αιγόξηζκνη Δνκή επηινγήο. Απιή Επηινγή ύλζεηε Επηινγή. Εηζαγσγή ζηηο Αξρέο ηεο Επηζηήκεο ησλ Η/Τ. introcsprinciples.wordpress.

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

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

Διζαγυγή ζηην πληποθοπική

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Constructors and Destructors in C++

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΔΝΓΔΙΚΣΙΚΔ ΛΤΔΙ ΣΑ ΜΑΘΗΜΑΣΙΚΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ 2017

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Αιγόξηζκνη Δθρώξεζε, Δίζνδνο θαη Έμνδνο ηηκώλ Γνκή αθνινπζίαο. Δηζαγσγή ζηηο Αξρέο ηεο Δπηζηήκεο ησλ Η/Υ

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗ ΦΥΣΙΚΗ. Ύλη: Εσθύγραμμη Κίνηζη

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

α) ηε κεηαηόπηζε x όηαλ ην ζώκα έρεη κέγηζην ξπζκό κεηαβνιήο ζέζεο δ) ην κέγηζην ξπζκό κεηαβνιήο ηεο ηαρύηεηαο

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

Παλαιοσλαβική Γλώσσα. Ενότητα 13: Μορφολογία Τα ρήματα. Αλεξάνδρα Ιωαννίδου. Τμήμα Σλαβικών Σπουδών

Δπαστηπιότητα 1 - ανάπτςξη, μεταγλώττιση, αποσυαλμάτωση και. εκτέλεση ππογπάμματορ

ΕΠΑΝΑΛΗΠΣΙΚΕ ΑΠΟΛΤΣΗΡΙΕ ΕΞΕΣΑΕΙ Γ ΣΑΞΗ ΗΜΕΡΗΙΟΤ ΕΝΙΑΙΟΤ ΛΤΚΕΙΟΤ ΠΑΡΑΚΕΤΗ 4 ΙΟΤΛΙΟΤ ΑΕΠΠ

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

Αγορές Χρήματος & Κεφαλαίου

x x x x tan(2 x) x 2 2x x 1

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Δξγαιεία Καηαζθεπέο 1 Σάμε Σ Δ.Κ.Φ.Δ. ΥΑΝΙΧΝ ΠΡΧΣΟΒΑΘΜΙΑ ΔΚΠΑΙΓΔΤΗ. ΔΝΟΣΗΣΑ 11 ε : ΦΧ ΔΡΓΑΛΔΙΑ ΚΑΣΑΚΔΤΔ. Καηαζθεπή 1: Φαθόο κε ζσιήλα.

ΜΙΓΑΔΙΚΟΙ ΑΡΙΘΜΟΙ: έζησ

ΥΛΙΚΑ ΠΑΡΟΝ ΚΑΙ ΜΕΛΛΟΝ ΠΑΝΕΠΙΣΗΜΙΟ ΚΡΗΣΗ ΣΜΗΜΑ ΕΠΙΣΗΜΗ ΚΑΙ ΣΕΧΝΟΛΟΓΙΑ ΤΛΙΚΩΝ

Παλαιοσλαβική Γλώσσα. Ενότητα 11: Μορφολογία Τα Ονόματα/Αντωνυμίες. Αλεξάνδρα Ιωαννίδου. Τμήμα Σλαβικών Σπουδών

A. Αιιάδνληαο ηε θνξά ηνπ ξεύκαηνο πνπ δηαξξέεη ηνλ αγωγό.

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

Ππογπαμμαηιζμόρ Ι (ΗΥ120)

ΔΠΙΣΡΟΠΗ ΓΙΑΓΩΝΙΜΩΝ 74 ος ΠΑΝΔΛΛΗΝΙΟ ΜΑΘΗΣΙΚΟ ΓΙΑΓΩΝΙΜΟ ΣΑ ΜΑΘΗΜΑΣΙΚΑ Ο ΘΑΛΗ 19 Οκηωβρίοσ Δνδεικηικές λύζεις

Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο κόζηος ανά μονάδα παραγωγής. Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο ζηαθερό κόζηος ανά μονάδα παραγωγής

ΑΝΟΙΧΣΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΣΑ ΠΛΗΡΟΦΟΡΙΚΗ & ΑΛΓΟΡΙΘΜΟΙ

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

Θεωρία τησ Πληροφορίασ (Θ) ΔΙΔΑΚΩΝ: Δρ. Αναςτάςιοσ Πολίτησ

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

ΕΞΙΣΩΣΕΙΣ. Α. Πρωτοβάθμιεσ Εξιςώςεισ. Β. Διερεφνηςη Εξιςώςεων. 1x είναι αδφνατθ. x 1 x 1. Άλγεβρα Α Λυκείου

ΜΑΘΗΜΑΤΙΚΑ ΘΔΤΙΚΗΣ ΚΑΙ ΤΔΦΝΟΛΟΓΙΚΗΣ ΚΑΤΔΥΘΥΝΣΗΣ Β ΛΥΚΔΙΟΥ ΤΔΣΤ(1) ΣΤΑ ΓΙΑΝΥΣΜΑΤΑ

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

ΜΗΧΑΝΟΛΟΓΙΚΟ ΣΧΔΓΙΟ ΙΙ

Άσκηση 1 - Μοπυοποίηση Κειμένου

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

ΜΑΘΗΜΑ: ΜΑΘΗΜΑΤΙΚΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Γ ΛΥΚΕΙΟΥ

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

ΑΕΠΠ 1o Επαναληπηικό Διαγώνιζμα

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

β) (βαζκνί: 2) Έζησ όηη ε ρξνλνινγηθή ζεηξά έρεη κέζε ηηκή 0 θαη είλαη αληηζηξέςηκε. Δίλεηαη ην αθόινπζν απνηέιεζκα από ην EViews γηα ηε :

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

1 Είζοδορ ζηο Σύζηημα ΣΔΕΔ ή BPMS

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Λεκηική έκθραζη, κριηική, οικειόηηηα και ηύπος δεζμού ζηις ζηενές διαπροζωπικές ζτέζεις

ΠΔΡΗΓΡΑΦΖ ΛΔΗΣΟΤΡΓΗΚΟΣΖΣΑ ΥΔΓΗΟΤ ΑΡΗΘΜ. 1

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

ΓΔΧΜΔΣΡΙΑ ΓΙΑ ΟΛΤΜΠΙΑΓΔ

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

O επεξεπγαζηήρ: Η δίοδορ δεδομένων (datapath) θαη ε μονάδα ελέγσος (control)

3 ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ ( while, do while )

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ

Transcript:

ΑΡΙΣΟΣΕΛΕΙΟ ΠΑΝΕΠΙΣΗΜΙΟ ΘΕΑΛΟΝΙΚΗ ΑΝΟΙΚΣΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΣΑ Σχεδίαση Γλωσσών & Μεταγλωττιστζς Ενότητα 15: Παραγωγή Κώδικα για Αριθμητικζσ και Λογικζσ Εκφράςεισ Επ. Καθ. Π. Κατςαρόσ Τμήμα Πληροφορικήσ

Άδειεσ Χρήςησ Το παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χρήςησ Creative Commons. Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που υπόκειται ςε άλλου τφπου άδεια χρήςησ, η άδεια χρήςησ αναφζρεται ρητώσ.

Χρηματοδότηςη Το παρόν εκπαιδευτικό υλικό ζχει αναπτυχθεί ςτα πλαίςια του εκπαιδευτικοφ ζργου του διδάςκοντα. Το ζργο «Ανοικτά Ακαδημαϊκά Μαθήματα ςτο Αριςτοτζλειο Πανεπιςτήμιο Θεςςαλονίκησ» ζχει χρηματοδοτήςει μόνο τη αναδιαμόρφωςη του εκπαιδευτικοφ υλικοφ. Το ζργο υλοποιείται ςτο πλαίςιο του Επιχειρηςιακοφ Προγράμματοσ «Εκπαίδευςη και Δια Βίου Μάθηςη» και ςυγχρηματοδοτείται από την Ευρωπαϊκή Ζνωςη (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικοφσ πόρουσ.

Δομή μεηαγλωηηιζηή: backend Λεξική ανάλυζη Συνηακηική ανάλυζη Σημαζιολογική ανάλυζη Παπαγωγή ενδιάμεζου κώδικα ελδηάκεζος θώδηθας Βεληιζηοποίηζη κώδικα Παπαγωγή κώδικα Η θαηαζθεπή ηνπ πξώηνπ ζηάδηνπ επεμεξγαζίαο (front end) είλαη ζε κεγάιν βαζκό απηνκαηνπνηεκέλε Γηα ην ηειηθό ζηάδην επεμεξγαζίαο (back end) δε δηαζέηνπκε γεληθά απηνκαηνπνηεκέλεο ηερληθέο θαηαζθεπήο, γηαηί εμάιινπ ν παξαγόκελνο θώδηθαο εμαξηάηαη από ηα ραξαθηεξηζηηθά ηεο κεραλήο ζηελ νπνία ζα εθηειείηαη θαη νη δπλαηόηεηεο βειηηζηνπνηήζεσλ πνηθίιινπλ Η δεκηνπξγία ελδηάκεζνπ θώδηθα επεξεάδεη θαζνξηζηηθά ηελ απόδνζε ηνπ back end 4

γξαθηθή ελδηάκεζε αλαπαξάζηαζε γξακκηθή ελδηάκεζε αλαπαξάζηαζε Μορθές ενδιάμεζης αναπαράζηαζης πληαθηηθά δέλδξα Καηεπζπλόκελνη άθπθινη γξάθνη Γξάθνη ξνήο ειέγρνπ Κώδηθαο κεραλήο ζηνίβαο Κώδηθαο ηξηώλ δηεπζύλζεωλ πςειό επίπεδν ρακειό επίπεδν (πην θνληά ζηε κεραλή) Τβξηδηθέο πξνζεγγίζεηο πνπ ρξεζηκνπνηνύλ ηερληθέο από ηηο δύν πξναλαθεξόκελεο νηθνγέλεηεο: Κάπνηνη κεηαγιωηηηζηέο ρξεζηκνπνηνύλ θώδηθα ηξηώλ δηεπζύλζεωλ θαη γηα επαλαιεπηηθνύο βξόρνπο, εληνιέο if θαη αλαθνξέο ζε array ρξεζηκνπνηνύλ ζπληαθηηθά δέλδξα 5

Σσνηακηικά δένδρα if (x < y) x = 5*y + 5*y/3; else y = 5; x = x+y; < IfStmt AssignStmt Statements AssignStmt x AssignStmt + x y x + y x y 5 * / 5 y 3 * 5 y 6

Καηεσθσνόμενοι άκσκλοι γράθοι Όηαλ γίλεηαη ρξήζε θαηεπζπλόκελωλ άθπθιωλ γξάθωλ γηα ηελ αλαπαξάζηαζε εθθξάζεωλ if (x < y) else Γηα θάζε έθθξαζε ρξεζηκνπνηείηαη έλαο κόλν θόκβνο x = 5*y + 5*y/3; y = 5; x = x+y; < IfStmt AssignStmt x y + / Statements AssignStmt * 3 5 7

Γράθοι ροής ελέγτοσ Οη θόκβνη ελόο γξάθνπ ξνήο ειέγρνπ είλαη βαζικά block Βαζηθό block είλαη κία ζεηξά εληνιώλ πνπ πάληα ε εθηέιεζή ηνπο αξρίδεη από ηελ πξώηε θαη ηειεηώλεη ζηελ ηειεπηαία απ απηέο Σα ηόμα ζε έλα γξάθν ξνήο ειέγρνπ αλαπαξηζηνύλ ηε ξνή ειέγρνπ if (x < y) x = 5*y + 5*y/3; else y = 5; x = x+y; B 0 if (x < y) goto B 1 else goto B 2 B 1 B 2 x = 5*y + 5*y/3 y = 5 Κάζε βαζηθό block πεξηιακβάλεη κία ζεηξά εληνιώλ B 3 Δελ επηηξέπεηαη δηαθπγή από ην κέζν ελόο block Όηαλ γίλεηαη εθθίλεζε ηεο εθηέιεζεο ελόο block ηόηε ε εθηέιεζε νινθιεξώλεηαη πάληα ζηελ ηειεπηαία εληνιή ηνπ x = x+y 8

σζεί ηελ ηηκή ηεο ζέζεο x ζηελ θνξπθή ηεο ζηνίβαο Μητανή ζηοίβας load x load y if (x < y) iflt L1 αθαηξεί δύν ζηνηρεία x = 5*y + 5*y/3; goto L2 από ηελ θνξπθή θαη ηα ζπγθξίλεη else L1: push 5 y = 5; load y x = x+y; multiply αθαηξεί δύν ζηνηρεία push 5 από ηελ θνξπθή, ηα JVM: Μία κεραλή ζηνίβαο πνιιαπιαζηάδεη θαη load y ηνπνζεηεί ην Δεμηά θαίλεηαη ζπκβνιηθόο θώδηθαο γηα ηελ JVM, πνπ multiply απνηέιεζκα ζηελ κεηαηξέπεηαη ζε bytecode κε ηνλ θαηάιιειν ζπκβν/ζηή push 3 θνξπθή Ο JVM δηεξκελεπηήο εθηειεί ηνλ bytecode ζε divide δηαθνξεηηθέο κεραλέο add Η JVM δηαζέηεη κία ζηνίβα πνπ ρξεζηκνπνηείηαη ζηελ απνζεθεύεη ηελ ηηκή store x ηεο θνξπθήο ηεο απνηίκεζε εθθξάζεσλ goto L3 ζηνίβαο ζηε ζέζε x Η JVM ρξεζηκνπνηεί 65535 «ηνπηθέο κεηαβιεηέο» L2: push 5 Οη «ηνπηθέο κεηαβιεηέο» ιεηηνπξγνύλ σο θαηαρσξεηέο store y Κάζε «ηνπηθή κεηαβιεηή» ζηελ JVM ζπκβνιίδεηαη κε L3: load x έλαλ αξηζκό κεηαμύ 0 θαη 65535 (ζην παξάδεηγκα load y απνδίδνληαη ζηηο x θαη y κνλαδηθνί αξηζκνί) add store x 9

Κώδικας ηριών διεσθύνζεων Ι Κάζε εληνιή κπνξεί λα έρεη ην πνιύ ηξεηο ηειεζηένπο Δθρώξεζε ηηκώλ x := y x := y op z op: δπαδηθνί αξηζκεηηθνί ή ινγηθνί ηειεζηέο x := op y op: κνλαδηαίνη ηειεζηέο (-, ΝΟΣ θ.α.) Γηαθιάδωζε goto L εθηέιεζε ηεο εληνιήο κε ηελ εηηθέηα L Τπό ζπλζήθε δηαθιάδωζε if x relop y goto L relop: <, =, <=, >=, ==,!= αλ ε ζπλζήθε είλαη αιεζήο ηόηε εθηειείηαη ε εληνιή κε ηελ εηηθέηα L αλ ε ζπλζήθε δελ είλαη αιεζήο ηόηε ζπλερίδεηαη ε εθηέιεζε κε ηελ επόκελε εληνιή 10

Κώδικας ηριών διεσθύνζεων ΙΙ if (x < y) else x = 5*y + 5*y/3; y = 5; x = x+y; νη πξνζσξηλέο κεηαβιεηέο αληηζηνηρνύλ ζε εζσηεξηθνύο θόκβνπο ηνπ ζπληαθηηθνύ δέλδξνπ Οη κεηαβιεηέο αλαπαξηζηώληαη από ηε ζέζε ηνπο ζηνλ πίλαθα ζπκβόισλ if x < y goto L1 goto L2 L1: t1 := 5 * y t2 := 5 * y t3 := t2 / 3 x := t1 + t2 goto L3 L2: y := 5 L3: x := x + y Οη εληνιέο ηνπ θώδηθα ηξηώλ δηεπζύλζεσλ κπνξνύλ λα αλαπαξαζηαζνύλ ζε πίλαθα από ηεηξάδεο: πξάμε, παξάκεηξνο 1, παξάκεηξνο 2, απνηέιεζκα ζε πίλαθα από ηξηάδεο: πξάμε, παξάκεηξνο 1, παξάκεηξνο 2 (θάζε ηξηάδα ζεσξείηαη όηη αληηζηνηρεί ζε κία πξνζσξηλή κεηαβιεηή κε πξόζβαζε ζηελ ηηκή ηεο κέζσ αλαθνξάο ζηνλ αξηζκό ηεο εληνιήο) 11

Παραγωγή κώδικα ηριών διεσθύνζεων Ιδηόηεηεο: Δηαδηθαζίεο: Παξαγσγέο S id := E E E 1 + E 2 E E 1 * E 2 E ( E 1 ) E E 1 E id E.place: ζέζε όπνπ βξίζθεηαη ε ηηκή γηα ηελ έθθξαζε E E.code: ζεηξά εληνιώλ πνπ παξάγνληαη γηα ηελ E newtemp(): επηζηξέθεη θάζε θνξά κία λέα πξνζσξηλή κεηαβιεηή gen(): δεκηνπξγεί θώδηθα (θαιείηαη κε ηηο θαηάιιειεο παξακέηξνπο) lookup(id.name): επηζηξέθεη ηε ζέζε ηνπ id ζηνλ πίλαθα ζπκβόισλ Σεκαζηνινγηθνί θαλόλεο id.place lookup(id.name); S.code E.code gen(id.place := E.place); E.place newtemp(); E.code E 1.code E 2.code gen(e.place := E 1.place + E 2.place); E.place newtemp(); E.code E 1.code E 2.code gen(e.place := E 1.place * E 2.place); E.code E 1.code; E.place E 1.place; E.place newtemp(); E.code E 1.code gen(e.place := uminus E 1.place); E.place lookup(id.name); E.code (θελή ζσκβοιοζεηρά) 12

Παραγωγή κώδικα για μητανή ζηοίβας Ιδηόηεηεο: Δηαδηθαζίεο: Παξαγσγέο S id := E E E 1 + E 2 E E 1 * E 2 E ( E 1 ) E E 1 E id E.code: ζεηξά εληνιώλ πνπ παξάγνληαη γηα ηελ E (δε τρεηάδεηαη ηδηόηεηα ζέζες γηα ηελ έθθραζε, αθού ηο αποηέιεζκα ηες έθθραζες αποζεθεύεηαη ζηε ζηοίβα) newtemp(): επηζηξέθεη θάζε θνξά κία λέα πξνζσξηλή κεηαβιεηή gen(): δεκηνπξγεί θώδηθα (θαιείηαη κε ηηο θαηάιιειεο παξακέηξνπο) lookup(id.name): επηζηξέθεη ηε ζέζε ηνπ id ζηνλ πίλαθα ζπκβόισλ Σεκαζηνινγηθνί θαλόλεο id.place lookup(id.name); S.code E.code gen( store id.place); E.code E 1.code E 2.code gen( add ); (οη παράκεηροη ηες εληοιής add βρίζθοληαη ζηελ θορσθή ηες ζηοίβας) E.code E 1.code E 2.code gen( multiply ); E.code E 1.code; E.code E 1.code gen( negate ); E.code gen( load id.place) 13

Παραγωγή κώδικα για λογικές εκθράζεις Γύν πξνζεγγίζεηο: Αξηζκεηηθή αλαπαξάζηαζε πλεπαγόκελε αλαπαξάζηαζε Αξηζκεηηθή αλαπαξάζηαζε Υξεζηκνπνηνύκε 1 γηα ην true θαη 0 γηα ην false ε θώδηθα ηξηώλ δηεπζύλζεωλ απνζεθεύεηαη ην απνηέιεζκα ζε πξνζωξηλή κεηαβιεηή ε θώδηθα κεραλήο ζηνίβαο ην απνηέιεζκα απνζεθεύεηαη ζηε ζηνίβα πλεπαγόκελε αλαπαξάζηαζε Γηα ινγηθέο εθθξάζεηο πνπ ρξεζηκνπνηνύληαη ζε έιεγρν ξνήο (π.ρ. εληνιέο if, while θιπ.) θαη δε ρξεζηκνπνηνύληαη γηα ηνλ ππνινγηζκό ελόο απνηειέζκαηνο, δεκηνπξγνύκε θώδηθα πνπ απιά δηαθιαδώλεη ζηελ θαηάιιειε εληνιή αλάινγα κε ην απνηέιεζκα 14

Λογικές εκθράζεις: αριθμηηική αναπαράζηαζη Ιδηόηεηεο : Καζ. κεηαβιεηή: Παξαγσγέο E id 1 relop id 2 E.place: ζέζε όπνπ βξίζθεηαη ε ηηκή γηα ηελ έθθξαζε E E.code: ζεηξά εληνιώλ πνπ παξάγνληαη γηα ηελ E id.place: ζέζε ηνπ id nextstat: επηζηξέθεη ηε ζέζε ηεο λέαο εληνιήο πνπ ζα δεκηνπξγεζεί (θάζε θιήζε ζηε gen() απμάλεη ηε nextstat θαηά 1) Σεκαζηνινγηθνί θαλόλεο E.place newtemp(); E.code gen( if id 1.place relop.op id 2.place goto nextstat+3); gen(e.place := 0 ) gen( goto nextstat+2) gen(e.place := 1 ); E E 1 and E 2 E.place newtemp(); E.code E 1.code E 2.code gen(e.place := E 1.place and E 2.place); 15

Λογικές εκθράζεις: ζσνεπαγόμενη αναπαράζηαζη Παξαγσγέο Ιδηόηεηεο : E id 1 relop id 2 E E 1 and E 2 Η δεκηνπξγεζείζα εηηθέηα ηνπνζεηείηαη ζηε ζέζε ηεο E 1.true ζηνλ θώδηθα ηεο E 1 E.code: ζεηξά εληνιώλ πνπ παξάγνληαη γηα ηελ E E.false: εηηθέηα δηαθιάδσζεο αλ ε E είλαη false E.true: εηηθέηα δηαθιάδσζεο αλ ε E είλαη true (E.code είλαη ζπλζέζηκε ελώ νη E.true θαη E.false είλαη θιεξνλνκήζηκεο) id.place: ζέζε ηνπ id Σεκαζηνινγηθνί θαλόλεο νπνηνζδήπνηε ηειεζηήο ζπζρέηηζεο:= =, <=, >=!= E.code gen( if id 1.place relop.op id 2.place goto E.true) gen( goto E.false); E 1.true newlabel(); E 1.false E. false; E 2.true E. true; E 2.false E. false; E.code E 1.code gen(e 1.true : ) E 2.code ; Τα ζπγθεθξηκέλα ζεκεία ηνπ θώδηθα ζπκπιεξώλνληαη κε ηηο θαηάιιειεο εηηθέηεο όηαλ απηέο γίλνπλ δηαζέζηκεο 16

Παράδειγμα λογικών εκθράζεων Θέζεηο εληνιώλ ηξηώλ δηεπζύλζεσλ θαη όρη εηηθέηεο Λνγηθή έθθξαζε εηζόδνπ: x < y and a == b Οη εηηθέηεο απηέο παξάγνληαη ζε κεηαγελέζηεξε θάζε θαη ηνπνζεηνύληαη ζηε ζσζηή ζέζε ηνπ θώδηθα Αξηζκεηηθή αλαπαξάζηαζε: 100 if x < y goto 103 101 t1 := 0 102 goto 104 103 t1 := 1 104 if a = b goto 107 105 t2 := 0 106 goto 108 107 t2 := 1 108 t3 := t1 and t2 Σπλεπαγόκελε αλαπαξάζηαζε: if x < y goto L1 goto LFalse L1: if a = b goto LTrue goto LFalse... LTrue: LFalse: 17

ΑΡΙΣΟΣΕΛΕΙΟ ΠΑΝΕΠΙΣΗΜΙΟ ΘΕΑΛΟΝΙΚΗ ΑΝΟΙΚΣΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΣΑ Τζλος ενότητας Επεξεργαςία: Εμμανουζλα Στάχτιαρη Θεςςαλονίκη, 21/07/2014