(i) morf (relocatable, linkable)

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

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Τελικός Κώδικας. Μεταγλωττιστές. Νίκος Παπασπύου, Κωστής Σαγώνας

(i) (ii) (interpreters) (linkers) (loaders) (decompilers) (meta-compilers) (preprocessors) (assemblers) (program generators)

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

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

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

Υποπρογράμματα (Subroutines)


PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS.

11 OktwbrÐou S. Malefˆkh Genikì Tm ma Majhmatikˆ gia QhmikoÔc

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

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

25 OktwbrÐou 2012 (5 h ebdomˆda) S. Malefˆkh Genikì Tm ma Majhmatikˆ gia QhmikoÔc

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS DEUTERHS KAI ANWTERHS TAXHS

Οδηγός Εκμάθησης στην Assembly

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

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS.

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ)

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

Συστήματα Μικροϋπολογιστών

Diˆsthma empistosônhc thc mèshc tim c µ. Statistik gia Hlektrolìgouc MhqanikoÔc EKTIMHSH EKTIMHSH PARAMETRWN - 2. Dhm trhc Kougioumtz c.

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

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

SUNARTHSEIS POLLWN METABLHTWN. 5h Seirˆ Ask sewn. Allag metablht n sto diplì olokl rwma

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

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

Statistik gia PolitikoÔc MhqanikoÔc EKTIMHSH PAR

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΛΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Εξετάσεις Ιουνίου 2002

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

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

Statistik gia QhmikoÔc MhqanikoÔc EKTIMHSH PARA

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

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

Diakritˆ Majhmatikˆ I. Leutèrhc KuroÔshc (EÔh Papaðwˆnnou)

ISTORIKH KATASKEUH PRAGMATIKWN ARIJMWN BIBLIOGRAFIA

Θεωρία Πιθανοτήτων και Στατιστική

Τίτλος Μαθήματος: Γραμμική Άλγεβρα Ι

JEMATA EXETASEWN Pragmatik Anˆlush I

Επιμέλεια: ρ. Ν. Σγούρος ρ. Ι. Κονταξάκης

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

Statistik gia PolitikoÔc MhqanikoÔc ELEGQOS UPOJ

Ο 8086 µπορεί να θεωρηθεί ότι αποτελείται από δύο τµήµατα επεξεργαστές, όπως φαίνεται και στο σχήµα 1, οι οποίοι είναι:

9. α 2 + β 2 ±2αβ. 10. α 2 ± αβ + β (1 + α) ν > 1+να, 1 <α 0, ν 2. log α. 14. log α x = ln x. 19. x 1 <x 2 ln x 1 < ln x 2

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

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

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

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

Ο 8086 µπορεί να θεωρηθεί ότι αποτελείται από δύο τµήµατα επεξεργαστές, όπως φαίνεται και στο σχήµα 1, οι οποίοι είναι:

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

Τίτλος Μαθήματος: Γραμμική Άλγεβρα ΙΙ

Εφαρμοσμένα Μαθηματικά για Μηχανικούς

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

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

Jerinì SqoleÐo Fusik c sthn EkpaÐdeush 28 IounÐou - 1 IoulÐou 2010 EstÐa Episthm n Pˆtrac

10/2013. Mod: 02D-EK/BT. Production code: CTT920BE

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

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

Συστήματα Μικροϋπολογιστών

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

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

Ανάλυση ις. συστήματα

Στατιστική για Χημικούς Μηχανικούς

L mma thc 'Antlhshc. A. K. Kapìrhc

Προηγμένοι Μικροεπεξεργαστές. Φροντιστήριο 2 Addressing

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

Παραδείγματα Προγραμματισμού σε Assembly του TRN

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

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

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

1 η Σειρά Ασκήσεων Θεόδωρος Αλεξόπουλος. Αναγνώριση Προτύπων και Νευρωνικά Δίκτυα

Ergasthriak 'Askhsh 2

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

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II SUNARTHSEIS POLLWN METABLHTWN.

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

Ãëþóóá ôåôñüäùí. ÌïñöÞ ôåôñüäáò: n: op, x, y, z üðïõ:

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

Εφαρμοσμένα Μαθηματικά για Μηχανικούς

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


Τίτλος Μαθήματος: Γραμμική Άλγεβρα ΙΙ

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

0100: MAR ADR; wait;mdr DB; SCR L DH+MDR+CY

Στατιστική για Χημικούς Μηχανικούς

Ανάλυση ασκήσεις. συστήματα

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

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

Τέτοιες λειτουργίες γίνονται διαμέσου του

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

Eisagwg sthn KosmologÐa

Mègisth ro - elˆqisth tom

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

ΘΕΜΑΤΑ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ-ΙΙ

GENIKEUMENA OLOKLHRWMATA

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

Data-Level Parallelism Linking & Loading

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

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

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

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

Transcript:

telikoô k dika: Morfèc mhqan c se apìluth morf (absolute) Gl ssa gl ssa (assembly) Sumbolik gl ssa qamhloô epipèdou 'Allh Telikìc k dikac (i) jewrhtik c poyhc, to prìblhma thc Apì bèltistou telikoô k dika den èqei kataskeu c lôsh (undecidable) mhqan c se epanatopojet simh kai Gl ssa morf (relocatable, linkable) diasundèsimh N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 143/202

Telikìc k dikac probl mata: Epimèrouc entol n Epilog entol n thc mn mhc sto qrìno ektèleshc DiaqeÐrish (ii) P c metafr zetai k je entol tou k dika endi mesou P c metafr zontai akoloujðec tètoiwn PoÔ apojhkeôontai ta dedomèna P c gðnetai h epikoinwnða an mesa stic domikèc mon dec N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 144/202

Qarakthristik : Intel 8086 Epexergast c: Telikìc upologist c (i) sôsthma: MS-DOS Leitourgikì mn mhc: COM / tiny Montèlo Sunolik mn mh 64 K Org nwsh se èna segment Arqik dieôjunsh tou progr mmatoc h 100h gl ssa: sumbat me to Sumbolik MASM (Microsoft sumbolometafrast assembler) macro N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 145/202

(ii) Telikìc upologist c Kataqwrhtèc, megèjouc 16 bit Genik c fôshc: ax, bx, cx, dx se zeôgh twn 8 bit: ah, al, k.lp. deðktec: sp (deðkthc stoðbac) Kataqwrhtèc bp (deðkthc b shc) kai anafor c: si kai di Kataqwrhtèc tmhm twn: cs (code), ds Kataqwrhtèc ss (stack) kai es (extra) (data), kataqwrhtèc: ip (instruction EidikoÐ pointer) kai kataqwrht c shmai n (flags) N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 146/202

Telikìc upologist c (iii) DieujÔnseic: address = segment 16 + offset Morf entol c: [ label ] opname [ operand 1 [, operand 2 ]] N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 147/202

Telikìc upologist c (iv) Entolèc: mov, lea Metafor c: pr xewn: add, sub, neg, imul, Arijmhtik n cmp, cwd idiv, pr xewn: and, or, xor, not, test Logik n jmp, jz, jnz, jl, jle, jg, jge 'Almatoc: stoðbac: push, pop DiaqeÐrishc call, ret Upoprogramm twn: Pr xewn kinht c upodiastol c (x87 FPU) N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 148/202

metafor c mov destination, source Entolèc mov ax, 42 mov ax, bx mov ax, [1000h] mov ax, [si] mov ax, [si + 6] mov ax, [bp + 6] mov ax, [si + bp + 6] lea destination, source (move) (load effective address) megèjouc dedomènwn Kajorismìc mov ax, word ptr [bp + 6] mov al, byte ptr [bp + 6] N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 149/202

pr xeic add op Arijmhtikèc 1, op 2 op 1 := op 1 + op 2 sub op 1, op 2 op 1 := op 1 op 2 neg op imul op idiv op cwd op := op (dx, ax) :=ax op ax := (dx, ax) div op dx := (dx, ax) mod op cmp op 1, op 2 sôgkrine ta op 1 kai op 2 epèktash pros mou tou ax ston dx enhmèrwse tic shmaðec N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 150/202

pr xeic and op Logikèc 1, op 2 op 1 := op 1 and op 2 or op 1, op 2 op 1 := op 1 or op 2 not op op := not op xor op 1, op 2 op 1 := op 1 xor op 2 test op 1, op 2 op 1 and op 2 enhmèrwse tic shmaðec N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 151/202

lmatoc jmp address Entolèc jz address je address jnz address jne address jl address jle address jg address jge address / Ðso mhdèn mhdèn / di foro ìqi mikrìtero Ðso mikrìtero megalôtero qwrðc sunj kh megalôtero Ðso N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 152/202

stoðbac push op Entolèc sth stoðba prìsjesh sp := sp 2, [sp] :=op pop op afaðresh apì th stoðba op := [sp], sp := sp +2 H stoðba aux nei proc ta k tw, dhlad proc mikrìterec dieujônseic N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 153/202

call address Entolèc upoprogramm twn sp := sp 2, [sp] :=ip, ip := address kl sh ret epistrof ip := [sp], sp := sp +2 H tim tou ip pou topojeteðtai sth stoðba apì call eðnai h dieôjunsh thc entol c pou thn thn call akoloujeð N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 154/202

Entolèc x87 FPU (i) Eidik stoðba 8 kataqwrht n: ST(0),... ST(7) fld source fld tbyte ptr @real1 fild source fild word ptr [bp 2] fstp destination fld tbyte ptr [bp 10] fistp destination (load real & push) (load integer & push) (pop & store real) (pop & store integer) fild word ptr [bp 2] N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 155/202

Entolèc x87 FPU (ii) faddp ST(1), ST(0) fsubp ST(1), ST(0) fmulp ST(1), ST(0) fdivp ST(1), ST(0) fchs fcompp fstsw destination fstsw ax fstsw word ptr [bp 2] ST(1) :=ST(1) +ST(0) &pop ST(1) :=ST(1) ST(0) &pop ST(1) :=ST(1) ST(0) &pop ST(1) :=ST(1)/ST(0) &pop ST(0) := ST(0) ST(1) ST(0) &popboth (store x87 FPU flags) N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 156/202

DiaqeÐrish mn mhc enot twn (block structure) Dom topik dedomèna Mh Par metroi Apotèlesma kat stashc mhqan c PlhroforÐec metablhtèc Topikèc (i) drasthriopoðhshc (activation Eggr fhma record) Proswrinèc metablhtèc N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 157/202

(ii)... bp+8 Παράµετρος 1 DiaqeÐrish mn mhc Παράµετρος 2... Παράµετρος n Παράµετρος 1 Παράµετρος 2... Παράµετρος n Παράµετροι αρχή bp+6 ιεύθυνση αποτελέσµατος ιεύθυνση αποτελέσµατος bp+4 bp+2 bp bp-2 bp-4... Σύνδεσµος προσπέλασης ιεύθυνση επιστροφής Προηγούµενο bp Τοπική µεταβλητή 1 Τοπική µεταβλητή 2... Τοπική µεταβλητή m ιεύθυνση επιστροφής Προηγούµενο display Προηγούµενο bp Τοπική µεταβλητή 1 Τοπική µεταβλητή 2... Τοπική µεταβλητή m Σταθερό Τµήµα Τοπικές µεταβλητές βάση Προσωρινή µεταβλητή 1 Προσωρινή µεταβλητή 2... Προσωρινή µεταβλητή k Προσωρινή µεταβλητή 1 Προσωρινή µεταβλητή 2... Προσωρινή µεταβλητή k Προσωρινές µεταβλητές τέλος α) Σύνδεσµοι προσπέλασης β) Πίνακας δεικτών N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 158/202

(iii) Ε κύριου προγράµµατος Ε υποπρογράµµατος 1... Ε υποπρογράµµατος m DiaqeÐrish mn mhc στοίβα εκτέλεσης ελεύθερη µνήµη δυναµικό δεδοµένο k... σωρός δυναµικό δεδοµένο 1 µνήµη για αποθήκευση δεδοµένων συνολική διαθέσιµη µνήµη 64Κ µεταφρασµένος κώδικας µνήµη για αποθήκευση του κώδικα του προγράµµατος 0Κ N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 159/202

drasthriopoðhshc ìpou ta eggraf matoc eðnai topik dedomèna prìblhma an getai ston entopismì tou To eggraf matoc drasthriopoðhshc antðstoiqou pou basðzontai sto b joc fwli smatoc: LÔseic prospèlashc (access links) SÔndesmoi onom twn Prospèlash [bp + offset] Topik : Mh topik : [si + offset] o si prèpei na deðqnei sth b sh tou PÐnakec deikt n (link tables / displays) N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 160/202

leitourgðac Arq ìti h domik mon da p brðsketai 'Estw SÔndesmoi prospèlashc (i) fwliasmènh mèsa sth domik mon da q Sto ED thc p topojeteðtai èna sôndesmoc th b sh tou ED thc pio prìsfathc proc thc q kl shc thn kl sh upoprogramm twn, apaiteðtai Kat k dikac gia thn enhmèrwsh twn telikìc sundèsmwn prospèlashc N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 161/202

qr shc Trìpoc ìti zhteðtai to dedomèno a pou eðnai 'Estw SÔndesmoi prospèlashc (ii) se mia domik mon da me b joc topikì n fwli smatoc a ìti briskìmaste se mia domik 'Estw p me b joc fwli smatoc n mon da p n a AkoloujoÔme n p n a sundèsmouc prospèlashc thn prospèlash onom twn, apaiteðtai Kat k dikac gia thn ulopoðhsh twn parap nw telikìc N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 162/202

Pèrasma paramètrwn kat' axða Kl sh kat' anafor Kl sh kat' ìnoma Kl sh kat' an gkh Kl sh (call by value) (call reference) by (call name) by (call need) by kat' axða kai apotèlesma Kl sh (call value-result) by Trìpoc ulopoðhshc kajenìc N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 163/202

Dèsmeush kataqwrht n (i) 1: epilog teloumènwn pou ja Prìblhma se kataqwrhtèc apojhkeutoôn 2: epilog kataqwrht n ìpou ja Prìblhma ta teloômena apojhkeutoôn prìblhma thc bèltisthc qr shc To eðnai NP-complete, akìma kai kataqwrht n qwrðc eidikoôc periorismoôc lôsh tou an getai sthn kataskeu tou H allhlepidr sewn metaxô twn gr fou kai sto qrwmatismì autoô me tìsa metablht n ìsoi oi kataqwrhtèc qr mata N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 164/202

Dèsmeush kataqwrht n Par deigma: 1:, b, b, $1 2:, 4, a, $2 3:, $2, c, $3 4:, $1, $3, $4 5: :=, $4,, d $1 (ii) d := b*b-4*a*c $2 ax $3 $4 bx N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 165/202

prosèggish: plakìstrwsh (tiling) KalÔterh tou endi mesou k dika se temaqismìc tm mata tm ma antistoiqeð se mia entol k je Epilog entol n (i) all kak prosèggish: eniaðo sq ma Apl telikoô k dika gia k je dom tou paragwg c endi mesou k dika all qronobìra prosèggish: Bèltisth programmatismìc (dynamic dunamikìc programming) N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 166/202

Epilog entol n (ii) d := b*b-4*a*c := Par deigma: mem := + * * d bp offset d mem * mem * * + 4 mem + b b * c bp offset b + bp offset c 4 a bp offset a N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 167/202

Epilog entol n (iii) R 1 Par deigma: tiling me entolèc tou 8086 R bi mem + CONST mov R 1,[R bi +CONST] mem + bp offset d := * ax ax mem ax ax * ax bx * bx mem * ax ax bx + 4 mem + bp offset b + bp offset c ax R 1 bp offset a imul R 1 N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 168/202

Epilog entol n (iv) Par deigma: tiling me entolèc tou 80386 := ax * R 1 mem ax bx mem + + * * CONST 2 ax ax bp offset d mem * mem R bi CONST 1 + 4 mem + imul R 1,[R bi +CONST 1 ],CONST 2 bp offset b + bp offset c bp offset a N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 169/202

To telikì prìgramma (i) xseg segment public code assume cs : xseg, ds : xseg, ss : xseg org 100h main proc near call near ptr program mov ax, 4C00h int 21h main endp... telikìc k dikac pou par getai... xseg ends end main Skeletìc: N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 170/202

To telikì prìgramma (ii) qrìnou ektèleshc (run-time library) Biblioj kh extrn function : proc sumboloseirèc kai kinht c Stajerèc upodiastol c @str1 db this is db 10 db an example db 0 @real1 dt 1e 10 @real2 dt 2.0 N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 171/202

(i) getar(a) Bohjhtikèc routðnec mov si, word ptr [bp + 4] mov si, word ptr [si + 4]... mov si, word ptr [si + 4] updateal() } (fìrtwsh dieôjunshc ED) (n cur n a 1 forèc) sundèsmwn (enhmèrwsh prospèlashc) an (a) push bp n p <n x (b) push word ptr [bp + 4] an n p = n x mov si, word ptr [si + 4]... mov si, word ptr [si + 4] push word ptr [si + 4] (g) mov si, word ptr [bp + 4] an n p >n x } (n p n x 1 forèc) N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 172/202

(ii) load(r, a) Bohjhtikèc routðnec (fìrtwsh teloumènou) EÐdoc tou a mov R, a true mov R, 1 false mov R, 0 K dikac pou par getai mov R, ASCII(a) nil mov R, 0 mov R, size ptr [bp + offset] (b1) topik ontìthta: metablht, par metroc kat' axða, (b2) proswrin metablht topik ontìthta: par metroc kat' anafor mov si, word ptr [bp + offset] mov R, size ptr [si] N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 173/202

(iii) load(r, a) Bohjhtikèc routðnec (fìrtwsh teloumènou) (g1) EÐdoc tou a mh topik ontìthta: metablht, getar(a) mov R, size ptr [si + offset] K dikac pou par getai par metroc kat' axða, topik mh ontìthta: par metroc kat' anafor (d) (e) getar(a) mov si, word ptr [si + offset] mov R, size ptr [si] [x] load(di, x) mov R, size ptr [di] {x} loadaddr(r, x) (g2) proswrin metablht N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 174/202

(iv) loadaddr(r, a) Bohjhtikèc routðnec (fìrtwsh dieôjunshc teloumènou) EÐdoc tou a K dikac pou par getai stajer sumboloseir lea R, byte ptr a (a5) lea R, size ptr [bp + offset] (b1) topik ontìthta: par metroc kat' axða, proswrin metablht mov R, word ptr [bp + offset] (b2) topik ontìthta: (g1) par metroc kat' anafor mh topik ontìthta: par metroc kat' axða, getar(a) lea R, size ptr [si + offset] topik mh ontìthta: anafor par metroc kat' (d) getar(a) mov R, word ptr [si + offset] [x] load(r, x) (g2) proswrin metablht N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 175/202

Bohjhtikèc routðnec (v) ulopoðhsh gia tic: Parìmoia loadreal(a) store(r, a) storereal(a) name(p) endof(p) label(n) label(l) p num @p num @n @p num l RoutÐnec gia etikètec telikoô k dika: N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 176/202

(i) Paragwg k dika load(r, x) store(r, z) Tetr da load(ax, y) mov cx, size imul cx loadaddr(cx, x) add ax, cx store(ax, z) Tetr da :=, x,, z loadreal(x) storereal(z) array, x, y, z N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 177/202

(ii) load(ax, x) load(dx, y) instr ax, dx store(ax, z) loadreal(x) loadreal(y) finstr ST(1), ST(0) storereal(z) instr = add sub finstr = k.lp. faddp Tetr dec, x, y, z /, x, y, z %, x, y, z Paragwg k dika Tetr dec +, x, y, z, x, y, z load(ax, x) load(cx, y) imul cx store(ax, z) load(ax, x) cwd load(cx, y) idiv cx store(ax, z) load(ax, x) cwd load(cx, y) idiv cx store(dx, z) N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 178/202

(iii) Paragwg k dika =, x, y, z <>, x, y, z <, x, y, z >, x, y, z <=, x, y, z >=, x, y, z load(ax, x) load(dx, y) cmp ax, dx instr label(z) instr = je, jne, k.lp. loadreal(x) loadreal(y) fcompp fstsw ax test ax, value instr label(z) value kai instr apì PÐnaka 9.1 sel. 249 N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 179/202

(iv) Paragwg k dika load(al, x) or al, al jnz label(z) Tetr da ifb, x,, z jump,,, z Tetr da jmp label(z) jumpl,,, z Tetr da jmp label(z) label,,, z Tetr da label(z) : N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 180/202

(v) Paragwg k dika Tetr da unit, x,, name(x) proc near push bp mov bp, sp sub sp, size endu, x,, Tetr da endof(x) : mov sp, bp pop bp ret name(x) endp N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 181/202

(vi) Paragwg k dika Tetr da call,,, z sub sp, 2 an z eðnai diadikasða updateal() call near ptr name(z) add sp, size + 4 Tetr da ret,,, jmp endof(current) N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 182/202

(vii) Paragwg k dika Tetr da par, x, y, y = V kai x eðnai 16 bit an load(ax, x) push ax y = V kai x eðnai 8 bit an load(al, x) sub sp, 1 mov si, sp mov byte ptr [si], al N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 183/202

Paragwg k dika (vii) par, x, y, (sunèqeia) Tetr da y = V kai x eðnai 80 bit an loadreal(x) sub sp, 10 mov si, sp fstp tbyte ptr [si] y = R RET an loadaddr(si, x) push si N. PapaspÔrou, Metaglwttistèc AprÐlioc 2005 184/202