Μεταγλωττιστές (Compilers) (Θ) Ενότητα 12: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Β) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Δομές Διακλάδωσης.
Advertisements

Αντοχή πλοίου ΙΙ (Θ) Ενότητα 6: Κάμψη ορθογωνικών ελασμάτων χωρίς ενισχυτικά Αλέξανδρος Θεοδουλίδης, Επικ. Καθηγητής Τμήμα Ναυπηγών Μηχανικών Τ.Ε. Ανοικτά.
Τέλος Ενότητας.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 9: Παραγωγή Ενδιάμεσου Κώδικα (Ενδιάμεσες Γλώσσες) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
Mη νευτωνικά συστήματα
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Περιεχόμενα Μαθήματος
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 4: Συμβολοσειρές και Δομές Ελέγχου. Διδάσκων: Νικόλαος Θ Λιόλιος,
Υδραυλικά & Πνευματικά ΣΑΕ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Εκπαιδευτικά Προγράμματα με Χρήση Η/Υ ΙΙ Θέμα «παιγνίδια» (website address) Διδάσκουσα: Καθηγήτρια Τζένη.
Στοιχεία Μηχανών ΙΙ Ενότητα 3: Μετωπικοί τροχοί με κεκλιμένη οδόντωση – Κωνικοί οδοντωτοί τροχοί Δρ Α. Δ. Τσολάκης Τμήμα Μηχανολόγων Μηχανικών Τ.Ε. ΕΛΛΗΝΙΚΗ.
Τεχνολογία και Προγραμματισμός Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός Ι
Η Γλώσσα Pascal Εντολή If
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Υπολογιστική Γεωμετρία και Εφαρμογές στις ΒΧΔ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Στοιχεία Μηχανών ΙΙ Ενότητα 4: Πλανητικοί Μηχανισμοί Δρ Α. Δ. Τσολάκης
Διαχείριση Κινδύνου Ενότητα 7: Παρακολούθηση Κινδύνων.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 13 Αξιολόγηση μαθήματος και διδάσκοντος από την εφαρμογή της Μονάδας Ολικής Ποιότητας (ΜΟΔΙΠ) του ΤΕΙ Αθήνας Αξιολόγηση του μαθήματος Αξιολόγηση.
Εισαγωγή στους Η/Υ Ενότητα 11: Αλγεβρικές πράξεις στους Η/Υ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(3)
Ενότητα 5 : Δομές Ελέγχου της γλώσσας PHP Ιωάννης Τσούλος
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Τοπολογικές σχέσεις 1/3 Βρείτε και περιγράψτε τις τοπολογικές σχέσεις σύμφωνα με τους (Pantazis, Donnay 1996) για τα παρακάτω γεω-γραφικά αντικείμενα:
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Επικοινωνιακός Προγραμματισμός Ι
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Εισαγωγή στους Η/Υ Ενότητα 12: Το διάγραμμα ροής και η λειτουργία του
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(4)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ειδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων -E
Γενική και Μαθηματική Χαρτογραφία (Ε)
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(5)
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(10)
ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 1: ……………….. Όνομα Επώνυμο Τμήμα __
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βάσεις Δεδομένων ΙΙ Ενότητα 6: Τεχνολογία PL/SQL - cursors Χ. Σκουρλάς
Προγραμματισμός & Εφαρμογές Η/Υ (Θ)
Μεταγλωττιστές (Compilers) (Θ)
Ναυπηγικό σχέδιο και αρχές casd
ΤΕΧΝΙΚΗ ΝΟΜΟΘΕΣΙΑ Ενότητα : ΠΡΟΣΔΙΟΡΙΣΜΟΣ - ΣΧΕΔΙΑΣΗ ΔΕΞΑΜΕΝΗΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΗ ΝΟΜΟΘΕΣΙΑ ΚΑΤΑΣΤΡΩΜΑ ΜΕ ΔΙΑΜΗΚΗ ΕΝΙΣΧΥΣΗ ΚΑΙ ΑΝΟΙΓΜΑ ΚΥΤΟΥΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα : Μοντελοποίηση. Μοντέλο Οντοτήτων – Συσχετίσεων Χ. Σκουρλάς
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Επικοινωνιακός Προγραμματισμός Ι
Μεταγράφημα παρουσίασης:

Μεταγλωττιστές (Compilers) (Θ) Ενότητα 12: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Β) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Εντολές ελέγχου ροής If-then-else Διακλάδωση ανάλογα με το αποτέλεσμα λογικής έκφρασης Βρόχοι (loops) Αποτίμηση συνθηκών πριν από το loop (αν χρειάζεται) Αποτίμηση συνθήκης μετά από το loop Διακλάδωση στην αρχή, αν ισχύει η συνθήκη While, for, do και until υλοποιούνται όλα με παρόμοιο τρόπο 2 έλεγχος σώμα έλεγχος ε π όμενο block

Μετάφραση εντολής if..then.. ProductionSemantic Rule S = if E then S 1 E.true = newlabel; E.false = newlabel; S.code := E.code || gen(E.true ":") || S 1.code E.code E.true: E.false: E.true: E.false: Έλεγχος (E.code)) Σώμα (S1.code) Eπ όμενο block (S1.code)

Μετάφραση εντολής if.. then.. else.. ProductionSemantic Rule S = if E then S 1 else S 2 E.true = newlabel; E.false = newlabel; S.after= newlabel; S.code := E.code || gen(E.true ":") || S 1.code || || gen(‘goto’ S.after) || gen(E.false ":") || S 2.code 4 E.true: E.code E.true: E.false: goto S.after S.after: έλεγχος Σώμα then goto Σώμα else

Παράδειγμα μετάφρασης εντολής if σε τετράδες program main; function f (var x : integer; y : integer; z : integer) : integer; ………. begin y := 2 * y - x - 1; if 3 * x + 2 * y = 999 then z:= 42 else x := x + 1 end; var n : integer; begin n := 9; end. 1:unit, f, -, - ……….. 6:*, 2, y, t1 7:-, t1, x, t2 8:-, t2, 1, t3 9::=, t3, -, y 10:*, 3, x, t4 11:*, 2, y, t5 12:+, t4, t5, t6 13:=, t6, 999, 15 14:goto, -, -, 17 15::=, 42, -, z 16:goto, -, -, 19 17:+, x, 1, t7 18::=, t7, -, x 19:endu, f, -, - 20:unit, main, -, - 21::=, 9, -, n 22:endu, main, -, - 5

Παράδειγμα : μετάφραση WHILE ProductionSemantic Rule S = while, E, do, S 1 S.begin = newlabel() S.after = newlabel() S.code := gen(S.begin ":") || E.code || gen("if" E.place "=" "0" "goto" S.after) || S1.code || gen("goto" S.begin) || gen(S.after ":") 6 E.Code if. E.place=0 goto S.after Goto S.begin S.after: S.begin: έλεγχος Σώμα (S1.code) έλεγχος ε π όμενο block

Ρουτίνα μετάφρασης εντολής WHILE Γενικό σχήμα μετάφρασης  while E do S1 7 newlabel (x1); newlabel(x2); gen (x1,’:’); anal (E,E.place); gen (‘if’,E.place,‘=0 goto’,x2); Anal (B,B.place); gen (‘goto’,x1); gen (x2,‘:’); E.Code if. E.place=0 goto S.after Goto S.begin S.after: S.begin: gen (x1, ‘:’) E.Code gen (if…) S1.Code gen (‘goto’, x1) gen (x2, ‘:’)

Παράδειγμα μετάφρασης εντολής WHILE (1 από 2) 8 Παράδειγμα: while (a<b) do begin i:=i+l a:=a*a+7*a end; b:=7; newlabel (x1); newlabel(x2); gen (x1,’:’); anal (a<b,E.place); gen (‘if’,E.place, ‘=0 goto’,x2); anal (i:=i+1 a:=a*a+7*a, B.place); gen(‘goto’,x1); gen (x2,‘:’);

Παράδειγμα μετάφρασης εντολής WHILE (2 από 2) 9

Λογική σύγκριση 10

Λογική σύγκριση με εκφράσεις Παραγωγή: Ε → Ε1 relop Ε2 Σημασιολογικός κανόνας: Ε.expr = E1, relop, E2, { E1.code || E2.code || t 1= newtemp; S.true = newlabel(); S.false = newlabel(; ) anal(E1, E1.place) anal(E2, E2.place) gen(if E1.place relop E2.place goto L1); gen(t1 “:=” 0); gen(‘goto’ S.false); gen(S.true “:”); gen(t1 “:=” 1); gen(S.false “:”);} 11

Λογικό and - παράδειγμα 12 if a<b goto LI goto L3 LI: if c<d goto L2 goto L3 L2: ……. L3: if a<b goto L1 goto L3 L1: …… … L3: ΠαραγωγήΣημασιολογικοί κανόνες E → E 1 and E 2 E 1.true  newlabel(); E 1.false  E. false; a<b and c<dE 2.true  E. true; E 2.false  E. false; E.code  E 1.code || gen(E 1.true ‘:’) || E 2.code ; if c<d goto L2 goto L3 L2: …… … L3: Η δημιουργηθείσα ετικέτα τοποθετείται στη θέση της E 1.true στον κώδικα της E 1 L1 L3 L2

Bραχυκυκλωμένες λογικές εκφράσεις 1/2 E = E 1 AND E 2 { Ε.true = newlabel; Ε.false = newlabel E 1.true = E.true; 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} 13 Έλεγχος E1 Έλεγχος Ε 2 ……. false E 1.true E.false E.true

Bραχυκυκλωμένες λογικές εκφράσεις 2/2 E = E 1 OR E 2 { Ε.true = newlabel; Ε.false = newlabel E 1.true = E.true; E 2.true = E.true; E 2.false = E.false; E.code = E 1.code || gen(E 1.false “:”) || E 2.code} E = not E 1 { Ε 1.false = E.true; E 1.true = E.false; E.code = E 1.code} 14 Έλεγχος E1 Έλεγχος Ε 2 true E.true E 1.false E.false

Δηλώσεις μεταβλητών Συνήθως, κατά την παραγωγή του ενδιάμεσου αλλά και του τελικού κώδικα, δεν είναι γνωστές οι απόλυτες θέσεις στη μνήμη των μεταβλητών. Έτσι, συνηθίζεται να τις τοποθετούμε σε μία κοινή περιοχή (π.χ. data segment, ή stack segment για τοπικές μεταβλητές) και να χρησιμοποιούμε ως διεύθυνσή τους την απόστασή τους (offset) από την αρχή της περιοχής. 15 ProductionSemantic Rule P  D offset = 0 D  id, “:”, T enter(id.name, T.type, offset) offset += T.width T  integer T.type = integer T.width = 4 T  real T.type = real T.width = 8 T  array “[” num “]” of T1 T.type = array(num.val,T1.type) T.width = num.val * T1.width

Aντίστοιχο σχέδιο μετάφρασης P  D {offset = 0} D  id, “:”, T, {enter(id.name, T.type, offset); offset + T.width} T  integer, {T.type = integer; T.width = 4} T  real, {T.type = real; T.width = 8} T  array “[” num “]” of T 1 {T.type=array(num.val,T 1.type); T.width = num.val * T 1.width} 16

Μετάφραση εντολών ανάθεσης σε πίνακα (1/3) a : = t[i] ; όπου t : array [ ] of elements ; 17 t(57) t[i] high=104 element w=4 low=57

Μετάφραση εντολών ανάθεσης σε πίνακα (2/3) Η διεύθυνση του t[ι] υπολογίζεται με τον εξής τύπο : δ = base + (i - low) * w (1) Δηλαδή αν θέλουμε να ξέρουμε πού αρχίζει το t[60] η βάση είναι το 1000, τότε έχουμε: δ = [60-57] * 4 = 1012 To t[60] έχει τοποθετηθεί στο 1012 στοιχείο της μνήμης (element). το δ ισοδυναμεί με: δ = base + (i - low) * w = base - low * w + i * w = c + i * w όπου το c πάντα σταθερό και θα εκτιμηθεί από τον ίδιο το μεταφραστή μετά από τις δηλώσεις εξοικονομώντας έτσι πολύτιμο χρόνο κατά τη διάρκεια της εκτέλεσης. 18

Μετάφραση εντολών ανάθεσης σε πίνακα (3/3) L → id [E] { L.array = digitlexval (id) L.type = L.array.type.elem L.place = newtemp () gen (L.place ‘=‘ E.place ‘*’ L.type.width)} L → L 1 [E] { L.array = L 1.array L.type = L 1.type.elem t = newtemp () L.place = newtemp () gen (t ‘=‘ E.place ‘*’ L.type.width)} gen (L.place ‘=‘ L1.place ‘+’ t)} 19

Παράδειγμα ΚΤΔ για εντολές switch 20 switch E { begin case V 1 :S 1 case V 2 :S 2 … case V n-1 :S n-1 default :S n end KTΔ E.code L 1 : if case_var != given_var goto L 2 S 1.code goto next L 2 :……. … L n :if case_var != given_var goto next S 1.code next:

Σχέδιο παραγωγής ΚΤΔ για switch SS = switch E begin LC end LC = LC 1 case E “:” S | ε 21 {LC.next = newlabel; LC.ctrl_var = E.place} {SS.code = E.code || LC.code || (gen(LC.next “:”) } {LC 1.next = LC.next; LC 1.ctrl_var = LC.ctrl_var} { L = newlabel; LC.code = LC 1.code || gen( if LC.ctrl_var “!=” E.place goto L) || S.code || gen( goto LC.next) || gen( L “:”);}

Τεχνική Backpatching (1/2) Η πλειοψηφία των σχεδίων μετάφρασης που προηγήθηκαν απαιτούν δύο περάσματα για τη δημιουργία ενδιάμεσου κώδικα. Π.χ. δεν γνωρίζουμε πού ακριβώς πρέπει να γίνει μετάβαση (goto) την στιγμή που παράγεται η αντίστοιχη εντολή. Το πρόβλημα μπορεί να λυθεί χωρίς να καταφύγουμε σε πολλαπλά περάσματα με την αναδρομική κατάβαση, η οποία συνίσταται στην κατασκευή λιστών από τις εντολές μετάβασης (goto, if… goto) για τις οποίες δεν είναι γνωστός ο προ-ορισμός. Όταν ο τελευταίος γίνει γνωστός, επισκεπτόμαστε τα μέλη της αντίστοιχης λίστας και συμπληρώνουμε τα αντίστοιχα πεδία. 22

Τεχνική Backpatching (2/2) 23 GOTO63 *. t1. ab L1:

Τέλος Ενότητας

Σημειώματα

Σημείωμα Αναφοράς Copyright Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας, Κατερίνα Γεωργούλη Κατερίνα Γεωργούλη. «Ενότητα 12: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Β)». Έκδοση: 1.0. Αθήνα Διαθέσιμο από τη δικτυακή διεύθυνση: ocp.teiath.gr.ocp.teiath.gr

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. Οι όροι χρήσης των έργων τρίτων επεξηγούνται στη διαφάνεια «Επεξήγηση όρων χρήσης έργων τρίτων». Τα έργα για τα οποία έχει ζητηθεί άδεια αναφέρονται στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

Επεξήγηση όρων χρήσης έργων τρίτων 28 Δεν επιτρέπεται η επαναχρησιμοποίηση του έργου, παρά μόνο εάν ζητηθεί εκ νέου άδεια από το δημιουργό. © διαθέσιμο με άδεια CC-BY διαθέσιμο με άδεια CC-BY-SA διαθέσιμο με άδεια CC-BY-NC-SA διαθέσιμο με άδεια CC-BY-NC Επιτρέπεται η επαναχρησιμοποίηση του έργου και η δημιουργία παραγώγων αυτού με απλή αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού, και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Δεν επιτρέπεται η εμπορική χρήση του έργου. διαθέσιμο με άδεια CC-BY-ND Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η δημιουργία παραγώγων του έργου. διαθέσιμο με άδεια CC-BY-NC-ND Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου και η δημιουργία παραγώγων του. διαθέσιμο με άδεια CC0 Public Domain διαθέσιμο ως κοινό κτήμα Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. χωρίς σήμανσηΣυνήθως δεν επιτρέπεται η επαναχρησιμοποίηση του έργου.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει:  το Σημείωμα Αναφοράς  το Σημείωμα Αδειοδότησης  τη δήλωση Διατήρησης Σημειωμάτων  το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.

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