Παραγωγή Τελικού Κώδικα. Γιώργος Μανής

Σχετικά έγγραφα
Τελικός Κώδικας. Παραγωγή. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. Παραγωγή. Τελικού Κώδικα. Ενδιάµεσος.

Παραγωγή Τελικού Κώδικα. Γιώργος Μανής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Στοιχεία από Assembly Γιώργος Μανής

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

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

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

Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

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

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

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

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

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

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

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

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

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers)

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

Εισαγωγή στην πληροφορική -4

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

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

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

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

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

Σημειώσεις για τον 80x86

MIPS functions and procedures

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

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Αρχιτεκτονικές Συνόλου Εντολών

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

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

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Ανάπτυξη και Σχεδίαση Λογισμικού

Παραγωγή Ενδιάµεσου Κώδικα. Γιώργος Μανής

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

Παραγωγή Ενδιάµεσου Κώδικα

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

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

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

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

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

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

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

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

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

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

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Αρχιτεκτονικη υπολογιστων

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

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

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

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

1. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ Μ/Ε ΕΣΩΤΕΡΙΚΟΙ ΚΑΤΑΧΩΡΗΤΕΣ

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

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

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

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;

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

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

ΠΡΟΗΓΜΕΝΟΙ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ PROJECT 2: MEMORY MANAGEMENT

Προτεινόμενες Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213 & Αποτελέσματα

Υπολογιστικά Συστήματα Λογική Σχεδίαση Αρχιτεκτονική Η/Υ Διδάσκοντες: Δρ. Ευγενία Αδαμοπούλου, Δρ. Κώστας Δεμέστιχας

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Transcript:

Παραγωγή Τελικού Κώδικα Γιώργος Μανής

Τελικός Κώδικας Ενδιάµεσος Κώδικας Παραγωγή Τελικού Κώδικα Τελικός Κώδικας

Η Γλώσσα Μηχανής Καταχωρητές R[0], R[1], R[2],, R[255] Ο καταχωρητής R[0] χρησιµοποείται σαν δείκτης στοίβας Ο program counter συµβολίζεται µε $ Πρόσβαση στη µνήµη Μ[address] M[R[ ]] M[R[0]+offset]

Η Γλώσσα Μηχανής ini tr outi so1 tr register so1 register addi tr,so1,so2 subi tr,so1,so2 muli tr,so1,so2 divi tr,so1,so2 tr=so1 + so2 tr=so1 - so2 tr=so1 * so2 tr=so1 / so2

Η Γλώσσα Μηχανής movi tr,so1 tr := so1 tr µνήµη register register register register so1 register µνήµη αριθµός R[0] (o SP) PC

Η Γλώσσα Μηχανής jmp addr cmpi so1,so2 jb addr jbe addr ja addr jae addr je addr jne addr addr label, M[..], R[..], δ/ση(αριθµός) so1,so2 registers addr label, M[..], R[..], δ/ση(αριθµός) addr label, M[..], R[..], δ/ση(αριθµός) addr label, M[..], R[..], δ/ση(αριθµός) αddr label, M[..], R[..], δ/ση(αριθµός) αddr label, M[..], R[..], δ/ση(αριθµός) addr label, M[..], R[..], δ/ση(αριθµός)

Η Γλώσσα Μηχανής Ο καταχωρητής SR είναι ένας πίνακας 8 θέσεων και τον επηρεάζουν η cmpi και ο έλεγχος για overflow. Η cmpi επηρεάζει το SR[0] και το SR[1]. Αν οι δυο αριθµοί είναι ίσοι το SR[0] γίνεται 1 και αν ο πρώτος αριθµός είναι µεγαλύτερος από τον δεύτερο τότε το SR[1] γίνεται 1. Ο έλεγχος υπερχείλισης επηρεάζει το SR[7] και αν υπάρχει υπερχείλιση τότε γίνεται 1. Όταν η εντολή είναι jb, jbe, ja, jae, je, jne, jo ελέγχει τα SR[0] και SR[1] και αν ισχύουν οι κατάλληλες συνθήκες πηγαίνει τον PC στο σωστό σηµείο.

Η Συνάρτηση gnlvcode Μεταφέρει στον R[255] τη διεύθυνση µίας µη τοπικής µεταβλήτής movi R[255], M[4+R[0]] όσες φορές χρειαστεί: R[255]=M[4+R[0]] movi R[255], M[4+R[255]] R[255]=M[4+R[255]] movi R[254], offset addi R[255], R[254], R[255] R[254]=offset R[255]=R[254]+R[255]

Η Συνάρτηση loadvr(v,r) αν v είναι αριθµός: movi R[r], v R[r]= v αν v είναι global µεταβλητή - δηλαδή του κυρίως προγράµµατος movi R[r], M[600+offset] R[r]= M[600+offset] αν v τοπική µεταβλητή ή τυπική παράµετρος που περνάει µε τιµή καιβάθοςφωλιάσµατος ίσο µε το τρέχον ή προσωρινή µεταβλητή: movi R[r], M[offset+R[0]] R[r]= M[offset+R[0]]

Η Συνάρτηση loadvr(v,r) αν v τυπική παράµετρος που περνάει µε αναφορά και βάθος φωλιάσµατος ίσο µε τοτρέχον: movi R[255], M[offset+R[0]] movi R[r], M[R[255]] R[255]=M[offset+R[0]] R[r]=M[R[255]] αν v τοπική µεταβλητή ή τυπική παράµετρος που περνάει µε τιµή και βάθος φωλιάσµατος µικρότερο από το τρέχον: gnlvcode( ) ώστε ο R[255] να έχει την σωστή δ/ση movi R[r], M[R[255]] R[r]=M[R[255]]

Η Συνάρτηση loadvr(v,r) αν v τυπική παράµετρος που περνάει µε αναφορά και βάθος φωλιάσµατος µικρότερο από το τρέχον: gnlvcode( ) ώστε ο R[255] να έχει την σωστή δ/νση movi R[255], M[R[255]] movi R[r], M[R[255]] R[255]=M[R[255]] R[r]=M[R[255]]

Η Συνάρτηση storerv(r,v) αν v είναι global µεταβλητή - δηλαδή του κυρίως προγράµµατος movi M[600+offset], R[r] M[600+offset] = R[r] αν v τοπική µεταβλητή ή τυπική παράµετρος που περνάει µε τιµή και βάθος φωλιάσµατος ίσο µε το τρέχον: movi M[offset+R[0]], R[r] M[offset+R[0]] = R[r]

Η Συνάρτηση storerv(r,v) αν v τυπική παράµετρος που περνάει µε αναφορά και βάθος φωλιάσµατος ίσο µε τοτρέχον: movi R[255], M[offset+R[0]] movi M[R[255]], R[r] R[255]=M[offset+R[0]] M[R[255]] = R[r] αν v τοπική µεταβλητή ή τυπική παράµετρος που περνάει µε τιµή και βάθος φωλιάσµατος µικρότερο από το τρέχον ή προσωρινή µεταβλητή : gnlvcode( ) ώστε ο R[255] να έχει την σωστή δ/ση movi M[R[255]], R[r] M[R[255]] = R[r]

Η Συνάρτηση storerv(r,v) αν v τυπική παράµετρος που περνάει µε αναφορά και βάθος φωλιάσµατος µικρότερο από το τρέχον: gnlvcode( ) ώστε ο R[255] να έχει την σωστή δ/νση movi R[255], M[R[255]] movi M[R[255]],R[r] R[255]=M[R[255]] M[R[255]]=R[r]

Εντολές Αλµάτων jump,_,_,w jmp Lw relop,x,y,w loadvr(x,1) loadvr(y,2) cmpi R[1], R[2] condjmp Lw relop={=,<>,>,>=,<,<=} R[1]=x R[2]=y comdjmp={je,jne,jb,jbe,ja,jae} H cmp επηρεάζει τον καταχωρητή SR και οι je,jne,jb,jbe,ja,jae τονελέγχουνκαικάνουνήόχιτοάλµα υπόσυνθήκη

Εκχώρηση :=,x,_,z loadvr(x,1) storerv(1,z) R[1]=x z=r[1]

Εντολές Αριθµητικών Πράξεων op,x,y,z loadvr(x,1) loadvr(y,2) op={+,-,*,/} op R[3], R[1], R[2] storerv(3,z) R[1]=x R[2]=y z=r[3] op={addi,subi,muli,divi} µπορεί για το αποτέλεσµα τηςop va χρησιµοποιηθεί και ένας από τους R[1] και R[2]

Εντολές Εισόδου-Εξόδου out,x,_,_ loadvr(x,1) outi R[1] in,x,_,_ ini R[1] storerv(1,x) R[1]=x x =R[1]

Επιστροφή Τιµής Συνάρτησης :=,x,_,return_value loadvr(x,1) movi R[255],M[8+R[0]] movi M[R[255]],R[1] R[1]=x αποθηκεύεται ο x στην διεύθυνση που είναι αποθηκευµένη στην 3η θέση του εγγραφήµατος δραστηριοποίησης.

Παράµετροι Συνάρτησης par,x,cv,_ (παράµετρος µετιµή) loadvr(x,255) R[255]=x movi M[d+R[0]], R[255] d=framelength+12+4*i i=αύξoντας αριθµός παραµέτρου

Παράµετροι Συνάρτησης par,x,ref,_ (παράµετρος µε αναφορά) Αν η καλούσα και η µεταβλητή x έχουν το ίδιο βάθος φωλιάσµατος: Αν η παράµετρος x είναι στην καλούσα συνάρτηση τοπική µεταβλητή ή παράµετρος που έχει περαστεί µε τιµή: movi R[255],R[0] movi R[254],offset addi R[255], R[254],R[255] movi M[d+R[0]], R[255]

Παράµετροι Συνάρτησης par,x,ref,_ (παράµετρος µε αναφορά) Αν η καλούσα και η µεταβλητή x έχουν το ίδιο βάθος φωλιάσµατος: Αν η παράµετρος x έχει περαστεί στην καλούσα συνάρτηση µε αναφορά: movi R[255],R[0] movi R[254],offset addi R[255], R[254],R[255] movi R[1], Μ[R[255]] movi M[d+R[0]], R[1]

Παράµετροι Συνάρτησης par,x,ref,_ (παράµετρος µε αναφορά) Αν η καλούσα και η µεταβλητή x έχουν διαφορετικό βάθος φωλιάσµατος: Αν η παράµετρος x είναι στην καλούσα συνάρτηση τοπική µεταβλητή ή παράµετρος που έχει περαστεί µε τιµή: gnlvcode( ) movi M[d+R[0]], R[255] Αν η παράµετρος x έχει περαστεί στην καλούσα συνάρτηση µε αναφορά: gnlvcode( ) movi R[1], Μ[R[255]] movi M[d+R[0]], R[1]

Παράµετροι Συνάρτησης par,x,ret,_ γεµίζουµε το3ο πεδίο της κληθείσας συνάρτησης µε τηνδ/νση της προσωρινής µεταβλητής όπου θα επιστραφεί η τιµή movi R[255], R[0] movi R[254], offset της προσωρινής µεταβλητής addi R[255],R[254], R[255] movi M[framelength+8+R[0]], R[255]

Κλήση Συνάρτησης Αρχικά γεµίζουµε το 2ο πεδίο της στοίβας της καλούµενης συνάρτησης µε την δ/νση της αρχής της πατρικής συνάρτησης της κληθείσας, ώστε η καλούµενη να ξέρει που να κοιτάξει για τις µεταβλητές στις οποίες έχει πρόσβαση. Αν η καλούσα και η κληθείσα έχουν το ίδιο βάθος φωλιάσµατος (καλούσα και κληθείσα έχουν τον ίδιο πατέρα): movi R[255], M[4+R[0]] movi M[framelenth+4+R[0]], R[255] Αν καλείται συνάρτηση µε µεγαλύτερο βάθος φωλιάσµατος από την καλούσα (η καλούσα είναι ο πατέρας της κληθείσας): movi M[framelength+4+R[0]],R[0]

Κλήση Συνάρτησης Ο έλεγχος περνάει στην κληθείσα συνάρτηση και γίνεται το γέµισµα του 1ου πεδίου της στοίβας ώστε να ξέρουµε που θα επιστρέψουµε όταν ολοκληρωθεί η εκτέλεση της συνάρτησης movi R[255], framelength addi R[0], R[255], R[0] (Ο SP στην αρχή της νέας στοίβας) movi R[255], $ movi R[254], 15 addi R[255], R[255], R[254] movi M[R[0]], R[255] (1ο πεδίο) jmp Lstart_quad (πέρασµα ελέγχου) 4 bytes 4 bytes 4 bytes 3 bytes --------- 15 bytes σύνολο

Κλήση Συνάρτησης επιστροφή στην καλούσα: subi R[0], R[0], R[255] (δείκτης στοίβας) end_block,x,_,_ jmp M[R[0]]

Αρχή και Τερµατισµός Προγράµµατος Αρχή προγράµµατος Άλµα στην πρώτη εκτελέσιµη εντολή Αρχικοποίηση του δείκτη στοίβας Τερµατισµός προγράµµατος halt,_,_,_ halt