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

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

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

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

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

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

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

Data-Level Parallelism Linking & Loading

Μετάφραση ενός Προγράμματος Εξαιρέσεις

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

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

Υποστήριξη Λ.Σ. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

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

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

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

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

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

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

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

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

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

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

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

Κεφάλαιο 2: Μεταφραστές

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

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

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

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

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

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 4: Ρουτίνες καθυστέρησης. [Συγγραφή ρουτίνας καθυστέρησης]

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

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

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

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

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

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

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

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

Εικονική Μνήμη (Virtual Μemory)

Εργαστήριο Αρ. 1. Εισαγωγή στην Αρχιτεκτονική MIPS. Πέτρος Παναγή Σελ. 1

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

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

Τρόποι Διευθυνσιοδότησης

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

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

MIPS functions and procedures

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

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

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

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

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

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

ΤΠ 2108 Αρχιτεκτονική Υπολογιστών (Εργαστήριο) ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΚΡΗΤΗΣ. Σειρά Ασκήσεων 2

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

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

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

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

Α. Ερωτήσεις Ανάπτυξης

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

Διαδικασιακός Προγραμματισμός

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

Εντολές γλώσσας μηχανής

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

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

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

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

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

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

Λογισμικό Υπολογιστών (Software) ΜΥΥ-106 Εισαγωγή Η/Υ και Πληροφορική

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

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Το λειτουργικό σύστημα. Προγραμματισμός II 1

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

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

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

Η γλώσσα προγραμματισμού C

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

Transcript:

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

Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό αποθετήριο 0.5 για έλειψη σχολίων. 1 για λάθος (copy&paste) σχόλια! τα σχόλια είναι πολύ σημαντικά στην assembly 2 για ψευτοεντολές όπως: lw $v0, matric! Η 2η εργαστηριακή άσκηση διορθώνεται Πολλές περιπτώσεις αντιγραφής (70) Χρησιμοποιώ το MOSS (Aitken, Stanford Uni.) για έλεγχο ομοιότητας κώδικα 2

MOSS report 3

Συχνά «λάθη» 1 beq $t0, $t1, exit exit: j exit exit: 4

Συχνά «λάθη» 2 loop: beq $t0, $t1, exit bne $t0, $t1, loop exit: loop: bne $t0, $t1, loop exit: 5

Συχνά «λάθη» 3 loop: beq $t0, $zero, doa back: j loop doa: j back loop: bne $t0, $zero, skip doa code here skip: j loop 6

Το σημερινό μάθημα! Addressing modes! Μεταγλώττιση και διερμηνεία! Assembler! Object files relocaxon table symbol table! Linker staxc, dynamic linking! Loader 7

Addressing modes 1/3! Τρόποι αναφοράς σε δεδομένα (ή εντολές) μέρος της ISA ενός επεξεργαστή! Ο MIPS έχει 5 τρόπους άμμεσα (immediate) με καταχωρητή (register) αναφορά μετατόπισης/βάσης (base/displacement) αναφορά σε σχέση με τον PC (PC relaxve) απευθείας ή απόλυτη (pseudo- direct / absolute) 8

Addressing modes 2/3 9

Addressing modes 3/3 10

Εκτέλεση προγραμμάτων! Προγράμματα σε γλώσσα υψηλού επιπέδου! Δύο τρόποι εκτέλεσης: διερμηνεία, μετάφραση και εκτ.! Διερμηνέας (interpreter) ένα πρόγραμμα που εκτελεί προγράμματα! Μεταφραστής (compiler) ένα πρόγραμμα που μεταφράζει προγράμματα σε γλώσσα assembly (και τελικά γλώσσα μηχανής) 11

Διερμηνεία! Χρησιμοποιείται για γλώσσες πολύ υψηλού επιπέδου haskel, scheme,! Παρέχει ευκολίες π.χ. δεν χρειάζεται δήλωση μεταβλητών, ο τύπος μιας μεταβλητής αλλάζει,... τρέχει σε οποιοδήποτε υπολογιστή! Γενικά η εκτέλεση είναι αργή τάξης 10x πιο αργή από αντίστοιχο πρόγραμμα σε γλώσσα μηχανής! Δύσκολο να κρυφτεί ο πηγαίος κώδικας 12

Διερμηνεία κώδικα μηχανής! Εύκολη γιατί η γλώσσα είναι απλή! Σε τι είναι χρήσιμο;! Προσομοίωση (simulaxon) π.χ. ο Mars περιέχει ένα διερμηνέα γλώσσας μηχανής MIPS! Emulaxon π.χ. όταν οι Mac αλλαξαν από PowerPC σε x86 επεξεργαστές Τα παλιά προγράμματα «προσομοιώνονταν» στον καινούριο επεξεργαστή Χρησιμοποιείται και για πολύπλοκες σπάνιες εντολές που δεν είναι υλοποιημένες σε hardware 13

Μεταφραση- εκτέλεση C 14

Assembler! Μεταφράζει από assembly (με ψευτοεντολές, macros) σε κώδικα μηχανής! macros - inline υπορουτίνες αντί για κλήση και επιστροφή (jal, jr) αντιγράφεται ο κώδικας αλλά υπάρχει παραμετροποίηση! Το αποτέλεσμα λέγεται object file για προγράμματα χωρισμένα σε πολλά αρχεία περιέχει τον κώδικα μηχανής και διάφορους πίνακες με πληροφορίες! περισσότερα σε λίγο 15

Assembler! Αριθμητικές (και παρόμοιες) εντολές δεν χρειάζεται τίποτα: όλη η πληροφορία είναι ήδη στην εντολή! Διακλαδόσεις διευθύνσεις «σχετικές» με τον PC (PC- relaxve) μετά την αντικατάσταση ψευτοεντολών, εύκολα υπολογίζεται πόσες εντολές μακρυά είναι μια ετικέτα προορισμός διακλάδοσης! Διπλό πέρασμα για μελλοντικές αναφορές beq $t1, $zero, skip skip: forward reference 16

Απόλυτες διευθύνσεις! Οι εντολές j, jal χρειάζονται την τελική διεύθυνση του στόχου/υπορουτίνας (absolute address)! Παρόμοια για διευθύνσεις στατικών δεδομένων! Για προγράμματα σε πολλά αρχεία/βιβλιοθήκες, οι τελικές διευθύνσεις δεν είναι γνωστές στον assembler! Θα γίνουν γνωστές κατά τη σύνδεση (link) όλα τα δεδομένα και ο κώδικας τοποθετούνται μαζί! Για την ώρα ο assembler μαζεύει σε πίνακες τις πληροφορίες που θα χρειαστεί ο linker 17

Πίνακας συμβόλων! Αγγλικός όρος: Symbol table! Πίνακας με όλα τα στοιχεία του αρχείου που θα είναι χρήσιμα σε κώδικα που βρίσκεται σε άλλα αρχεία θυμηθείτε την οδηγία.global! Στοιχεία: ετικέτες (αρχής) υπορουτινών ετικέτες δεδομένων 18

Πίνακας μετατόπισης! Αγγλικός όρος: relocaxon table! Πίνακας με τις διευθύνσεις όλων των εντολών που χρειάζονται «διόρθωση» στη διεύθυνση (σταθερά) που έχουν j, jal! για «τοπικές» και για απομακρυσμένες διευθύνσεις- στόχους μεταφορές από/προς στατική μνήμη: εντολές τύπου la! ή lw καταχωρητής σταθερά ($gp) 19

Παράδειγμα filea.asm:.data arraya1:.word 0:16.text proca1: jal proca2 la $t0, arraya1 proca2: loop: beq $s0, $s1, next jal procb1 next: j loop fileβ.asm: symbol table.text procβ1: loop: beq $s0, $s1, next la $t0, arraya1 next: j loop relocaxon table 20

Αρχείο object! object file header (επικεφαλίδα): πληροφορίες για το μέγεθος και τη θέση των υπόλοιπων πεδίων! text segment: κώδικας μηχανής! data segment: τα στατικά δεδομένα του αρχείου! relocaxon informaxon: ποιές εντολές πρέπει να αλλαχθούν αργότερα! symbol table: ετικέτες που αναφέρονται από εντολές (συνήθως άλλων αρχείων object του προγράμματος)! debugging informaxon! Το τελικό εκτελέσιμο είναι επίσης object file 21

Object file! Σε unix η πιο συνηθισμένη μορφή είναι ELF! και η κατάληξη αρχείου.o! Υπάρχουν εργαλεία για να παρατηρήσουμε τέτοια αρχεία readelf, objdump! Δοκιμάστε το σε κάποιο μικρό εκτελέσιμο αρχείο στο Unix βέβαια ο κώδικας θα είναι x86 assembly 22

Linker! Συνδιάζει πολλαπλά αρχεία object σε ένα εκτελέσιμο είσοδος: αρχεία.o, οδηγίες έξοδος: εκτελέσιμο αρχείο. a.out αν δεν του δώσουμε όνομα! Βοηθάει ώστε να «σπάει» ο πηγαίος κώδικας σε πολλαπλά αρχεία ο κώδικας εφαρμογών είναι τεράστιος! ξεχωριστή μετάφραση για κάθε αρχείο πηγαίου κώδικα! αλλιώς κάθε αλλαγή θα έπερνε πολλή ώρα για μετάφραση μόνο! Αναφέρεται και ώς link editor διορθώνει τις «συνδέσεις» προγραμμάτων. π.χ. jump- and- link 23

Linker: σύνδεση.o file 1 text 1 data 1 info 1.o file 2 text 2 data 2 info 2 a.out Relocated text 1 Linker Relocated text 2 Relocated data 1 Relocated data 2

Ξεκαθάρισμα αναφορών! Αγγλικός όρος: resolve references! Ο linker γνωριζει πόσο χώρο χρειάζεται κάθε τμήμα, κάθε αρχείου σε ποιές εντολές χρειάζεται να κάνει αλλαγές (relocaxon tables)! Ο linker υπολογίζει την ακριβή διεύθυνση κάθε ετικέτας (symbol tables)! Ο linker αλλάζει τις σταθερές σε όλες τις εντολές που έχουν απόλυτες διευθύνσεις 25

Βιβλιοθήκες! Εκτός από τα αρχεία object του προγραμματιστή, υπάρχουν και αντίστοιχα αρχεία βιβλιοθήκης π.χ. χειρισμός αρχείων, εμφάνιση μηνυμάτων στην οθόνη,...! Στο unix είναι σε μορφή elf και η κατάληξη είναι.a σε λίγο θα δούμε και.so! Αναφορές από τα object αρχεία του προγράμματος αναζητούνται σε αρχεία object βιβλιοθήκης χρειάζεται να πούμε στον linker ποιές βιβλιοθήκες χρειάζονται! Ο κώδικας και τα στατικά δεδομένα (σπάνια) βιβλιοθήκης συνδέονται με τον κώδικα του προγράμματος στατική σύνδεση (staxc linking) 26

Στατική σύνδεση! Η βιβλιοθήκη (ολόκληρη) γίνεται μέρος του εκτελέσιμου ακόμα και οι υπορουτίνες που δεν χρησιμοποιούνται! Το εκτελέσιμο είναι πολύ μεγάλο! Αλλαγές στη βιβλιοθήκη δεν μπορούν να περάσουν στο εκτελέσιμο! Αλλά, το εκτελέσιμο είναι «αυτόνομο»! Εναλλακτική επιλογή: δυναμικά συνδεδεμένες βιβλιοθήκες (dynamically linked libraries - DLLs) πλεον η συνηθισμένη μορφή 27

Δυναμικά συνδεδεμένες βιβλιοθήκες! Πλεονεκτήματα λιγότερος χώρος στο δίσκο για την εφαρμογή λιγότερος χρόνος για download εκτέλεση προγραμμάτων που μοιράζονται βιβλιοθήκες χρειάζεται λιγότερο χώρο στη μνήμη! ο κώδικας της βιβλιοθήκης είναι κοινός εκμετάλευση νέων εκδόσεων της βιβλιοθήκης! Μειωνεκτήματα κάπως ποιο αργή η κλήση υπορουτινών η εφαρμογή δεν είναι αυτόνομη: δεν αρκεί μόνο το εκτελέσιμο 28

Lazy linking 29

Loader! Φορτώνει και εκτελεί το πρόγραμμα προγραμμα: αρχείο τύπου object (ELF) αποθηκευμένο στο δίσκο! Πρέπει να διαβαστεί από το δίσκο και ο Program Counter να αλλάξει ώστε να δείχνει στην πρώτη εντολή του προγράμματος! Μέρος του λειτουργικού συστήματος 30

Loader, λεπτομέρειες! Διαβάζει την επικεφαλίδα του αρχείου βρίσκει το μέγεθος του κώδικα και στατικών δεδομένων! Παίρνει/βρίσκει χώρο στη μνήμη για τον κώδικα, δεδομένα και τη στοίβα σε άλλο μάθημα: εικονική μνήμη,...! Αντιγράφει κώδικα και δεδομένα από το δίσκο στη μνήμη! Αντιγράφει ορίσματα του προγράμματος στη στοίβα όπως σε κλήση υπορουτίνας! Αρχικοποιεί τους καταχωρητές Συνήθως τους μηδενίζει, αλλά θυμηθείτε «ειδικούς» καταχωρητές: stack pointer, global pointer,! Ξεκινάει ρουτίνα start- up αντιγράφει ορίσματα σε καταχωρητές και καλεί την main με jal Αν η main επιστρέψει, καλεί το exit system call

Επόμενο μάθημα Πώς μοιάζει η γλώσσα άλλων μηχανών: assembly ARM, x86 32