MIPS functions and procedures

Σχετικά έγγραφα
Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

6. Επιστροφή ελέγχου στο σημείο εκκίνησης

6. Επιςτροφι ελζγχου ςτο ςθμείο εκκίνθςθσ

Συναρτήσεις-Διαδικασίες

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

Αρχιτεκτονική Υπολογιστών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών. Μανόλης Γ.Η.

Οργάνωση Υπολογιστών

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

Παραδείγματα Assembly Μέρος Γ

ΠΛΕ- 027 Μικροεπεξεργαστές

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Δομημένος Προγραμματισμός

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Αναδρομή. ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 6. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Αρχιτεκτονική Υπολογιστών

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

{ int a = 5; { int b = 7; a = b + 3;

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Αρχιτεκτονική Υπολογιστών

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

Αρχιτεκτονική Υπολογιστών

Παραδείγματα Assembly (Μέρος

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

1 η Άσκηση Στην Αρχιτεκτονική Υπολογιστών

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης

Αρχιτεκτονική Υπολογιστών

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Αρχιτεκτονική Υπολογιστών Ι

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Αρχιτεκτονική Υπολογιστών

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ

Εντολές του MIPS (2)

Δομημένος Προγραμματισμός

Αρχιτεκτονική Υπολογιστών

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Περιεχόμενα ΜΤ Τυχαίας Προσπέλασης Θεωρία Υπολογισμού Ενότητα 23: Μηχανές Turing Τυχαίας Προσπέλασης Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ.

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

Αρχιτεκτονική Υπολογιστών

Δομημένος Προγραμματισμός

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 2 Οργάνωση μνήμης Καταχωρητές του MIPS Εντολές του MIPS 1

Προχωρημένες έννοιες προγραμματισμού σε C

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 7: Πρόγραμμα Συνδεδεμένης Λίστας και Διαδικασιών. Μανόλης Γ.Η.

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 5: Εντολές Συγκρίσεων και Μεταφοράς Ελέγχου. Μανόλης Γ.Η.

Εισαγωγή στην Πληροφορική

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

Κεφάλαιο 2 Εντολές Η γλώσσα της Μηχανής (Instructions Language of the Computer)

Αρχιτεκτονική Υπολογιστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Λύσεις 2 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 2 Εντολές: H γλώσσα μηχανής

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32. Αρχείο καταχωρητών και Χάρτης Μνήµης

Αρχιτεκτονική Υπολογιστών

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης. Multicycle datapath

με έμφαση στο MIPS R2000

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Προγραμματισμός Ι (ΗΥ120)

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Αρχιτεκτονική Υπολογιστών

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Δομημένος Προγραμματισμός

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης MIPS functions and procedures

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

Βήματα στην εκτέλεση μιας διαδικασίας (procedure) 1. Τοποθέτηση παραμέτρων 2. Μεταβίβαση ελέγχου στη διαδικασία 3. Λήψη πόρων αποθήκευσης 4. Εκτέλεση επιθυμητής εργασίας 5. Τοποθέτηση αποτελέσματος σε θέση προσβάσιμη από καλούν πρόγραμμα (caller) 6. Επιστροφή ελέγχου στο σημείο εκκίνησης 1

Κλήση διεργασιών: Σύμβαση κατανομής καταχωρητών $a0-$a3: τέσσερις καταχωρητές ορίσματος (argument regs) $v0-$v1: δύο καταχωρητές τιμής (value regs) $ra: καταχωρητής διεύθυνσης επιστροφής (return address reg) 2

Άλμα και σύνδεση (jump and link) PC: Μετρητής προγράμματος (program counter) Κρατάει τη διεύθυνση της εντολής που εκτελείται jal ΔιεύθυνσηΔιαδικασίας $ra PC+4 PC ΔιεύθυνσηΔιαδικασίας Γιαναεπιστρέχουμεκαλούμε jr $ra 3

Άλμα και σύνδεση (jump and link) - Σύνοψη 1. Ο caller τοποθετεί τιμές παραμέτρων στους $a0-$a3 2. Καλεί jal X για να μεταπηδήσει στη διαδικασία X (callee) 3. Εκτελεί υπολογισμούς 4. Τοποθετεί αποτελέσματα στους $v0 - $v1 5. Επιστρέφει με jr $ra 4

Χρήση πολλών καταχωρητών σε διαδικασίες; Τι γίνεται αν έχουμε >4 ορίσματα ή/και >2 αποτελέσματα; Χρησιμοποιούμε στοίβα (stack) Last-In-First-Out push, pop μικραίνει μνήμη υψηλές διευθύνσεις $sp μεγαλώνει χαμηλές διευθύνσεις 5

Παράδειγμα int leaf_example(int g, int h, int i, int j) { int f; g, h, i, j αντιστοιχίζονται στους $a0, $a1, $a2, $a3 f αντιστ. $s0 } f = (g+h) (i+j); return f; 6

Παράδειγμα int leaf_example(int g, int h, int i, int j) { int f; } f = (g+h) (i+j); return f; Σκονάκι g:$a0, h:$a1, i:$a2, j:$a3, f:$s0 leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #σώζουμε $t1 sw $t0, 4($sp) #σώζουμε $t0 sw $s0, 0($sp) #σώζουμε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 # f=(g+h) (i+j); sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαν. $s0 lw $t0, 4($sp) #επαν. $t0 lw $t1, 8($sp) #επαν. $t1 addi $sp, $sp, 12 jr $ra # πίσω στον caller 7

leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #σώζουμε $t1 sw $t0, 4($sp) #σώζουμε $t0 sw $s0, 0($sp) #σώζουμε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 # f=(g+h) (i+j); sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαν. $s0 lw $t0, 4($sp) #επαν. $t0 lw $t1, 8($sp) #επαν. $t1 addi $sp, $sp, 12 jr $ra # πίσω στον caller 8

leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #σώζουμε $t1 sw $t0, 4($sp) #σώζουμε $t0 sw $s0, 0($sp) #σώζουμε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαν. $s0 lw $t0, 4($sp) #επαν. $t0 lw $t1, 8($sp) #επαν. $t1 addi $sp, $sp, 12 jr $ra # πίσω στον caller Σύμβαση: ΔΕ ΣΩΖΟΥΜΕ $t0-$t9 Έτσι έχουμε: leaf_example: addi $sp,$sp,-4 sw $s0, 0($sp) #σώζουμε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαν. $s0 addi $sp, $sp, 4 jr $ra # πίσω στον caller 9

Ένθετες διαδικασίες leaf procedures (διαδικασίες φύλλα): δεν καλούν άλλες διαδικασίες Δεν είναι όλες οι διαδικασίες, διαδικασίες φύλλα (καλά θα ήταν ) Πολλές διαδικασίες καλούν άλλες διαδικασίες, ακόμα και τον εαυτό τους! π.χ. int foo(int a){... f=bar(a*2);... } ή int foo(int a){... f=foo(a-1);... } 10

Αναδρομική διαδικασία παραγοντικού fact: addi $sp,$sp,-8 int fact (int n){ sw $ra,4($sp) #διεύθ. επιστροφής if(n<1) return(1); sw $a0,0($sp) #όρισμα n else return(n*fact(n-1)); slti $t0,$a0,1 } beq $t0,$zero,l1 addi $v0,$zero,1 addi $sp,$sp,8 jr $ra L1: addi $a0,$a0,-1 jal fact lw $a0,0($sp) lw $ra,4($sp) addi $sp,$sp,8 mul $v0,$a0,$v0 jr $ra 11

Εκτέλεση: Έστω ότι καλούμε fact(3) και περιμένουμε να μας επιστρέψει το αποτέλεσμα στον καταχωρητή $v0 fact: addi $sp,$sp,-8 PC sw $ra,4($sp) #διεύθ. επιστροφής sw $a0,0($sp) #όρισμα n PC slti $t0,$a0,1 beq $t0,$zero,l1 addi $v0,$zero,1 addi $sp,$sp,8 PC PC PC PC jr $ra L1: PC PC: m addi $a0,$a0,-1 jal fact PC d: lw $a0,0($sp) PC PC $sp: $ra: l d lw $ra,4($sp) PC addi $sp,$sp,8 PC $v0: 126 mul $v0,$a0,$v0 PC $a0: 32 01 jr $ra PC $t0: PC βλ. m+4 m+8 PC l-8 l-16 l-24 l-32 m+8 01 finish $sp $sp $sp $sp $sp PC PC PC l l-4 l-8 l-12 l-16 l-20 l-24 l-28 l-32 l-36 l-40 m+8 m+4 m Μνήμη m+8 3 d 2 d 1 d 0... jal fact addi $a0,$zero,3 12 high low

Αναδρομική διαδικασία παραγοντικού int fact (int n){ if(n<1) return(1); else return(n*fact(n-1)); } Εκτός ύλης!!!! #include <stdio.h> int attribute ((regparm(3)))fact(register int n); int main(void){ printf("%d\n", fact(10));} ----------------------------------------------- #gcc c fact.s #gcc caller.c fact.o o exec #./exec x86 Assembly 1..globl fact 2. fact: 3. pushl %ebx 4. movl %eax, %ebx 5. decl %eax 6. jz.l4 7. call fact 8. imull %ebx, %eax 9..L3: 10. popl %ebx 11. ret 12..L4: 13. movl $1, %eax 14. jmp.l3 13

Πληροφορίες που διατηρούνται/δε διατηρούνται κατά τη κλήση μιας διαδικασίας Διατηρούνται Δε διατηρούνται Αποθηκευμένοι (saved) καταχωρητές: $s0 - $s7 Προσωρινοί καταχωρητές: $t0 - $t9 Καταχωρητής δείκτη στοίβας (stack pointer): $sp Καταχωρητές ορίσματος: $a0 - $a3 Καταχωρητής διεύθυνσης επιστροφής (return address): $ra Στοίβα επάνω (higher addresses) από το δείκτη στοίβας Καταχωρητές τιμής επιστροφής (return value): $v0 - $v1 Στοίβα κάτω (lower addresses) από το δείκτη στοίβας 14

Η επικοινωνία με τους ανθρώπους Οι υπολογιστές «καταβροχθίζουν» αριθμούς Επεξεργασία κειμένου και άλλες εφαρμογές όμως θέλουν χαρακτήρες (chars). Κώδικας ASCII (American Standard Code for Information Interchange) Ένας χαρακτήρας = 1 byte = 8 bits Οι λειτουργίες σε chars είναι πολύ συχνές- ο MIPS παρέχει εντολές για μεταφορά bytes. lb $t0, 0($s1) # ανάγνωση ενός byte load byte sb $t1, 0($s2) # αποθήκευση ενός byte store byte H lb φορτώνει ένα byte στα λιγότερο σημαντικά bits ενός καταχωρητή. Η sb αποθηκεύει το λιγότερο σημαντικό byte στη μνήμη. 15

Η επικοινωνία με τους ανθρώπους Αντιγραφή συμβολοσειράς (string) void strcpy(char x[], char y[]){ int i; i = 0; while((x[i] = y[i])!= \0 ) /* αντιγραφή και έλεγχος του byte */ i+=1; } Πώς είναι η assembly MIPS του παραπάνω κώδικα C; 16

Η επικοινωνία με τους ανθρώπους void strcpy(char x[], char y[]){ int i; i = 0; while((x[i] = y[i])!= \0 ) i+=1; } Base address x: $a0 Base address y: $a1 i αντιστ. στον $s0 strcpy: addi $sp,$sp,-4 #χώρος για να sw $s0, 0($sp) #σωθεί ο $s0 add $s0,$zero,$zero # i 0 L1: add $t1,$s0,$a1 #$t1 i+x lb $t2,0($t1) #$t2 M[i+x] add $t2,$s0,$a0 #$t2 i+y sb $t2,0($t3) #$t2 M[i+y] beq $t2,$zero,l2 #είναι $t2==0? addi $s0,$s0,1 # i += 1 j L1 L2: lw $s0, 0($sp) #ανάκτησε τον $s0 addi $sp,$sp,4 #διόρθωσε στοίβα jr $ra #πίσω στον καλούντα 17

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