15
ΑΡΙΣΟΣΕΛΕΙΟ ΠΑΝΕΠΙΣΗΜΙΟ ΘΕΑΛΟΝΙΚΗ ΑΝΟΙΚΣΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΣΑ Σχεδίαση Γλωσσών & Μεταγλωττιστζς Ενότητα 6: Παραγωγή κώδικα ςυμβολικήσ γλώςςασ του επεξεργαςτή Pentium Επ. Καθ. Π. Κατςαρόσ Τμήμα Πληροφορικήσ

Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

ΑΡΙΣΟΣΕΛΕΙΟ

ΠΑΝΕΠΙΣΗΜΙΟ

ΘΕΑΛΟΝΙΚΗ

ΑΝΟΙΚΣΑ

ΑΚΑΔΗΜΑΙΚΑ

ΜΑΘΗΜΑΣΑ

Σχεδίαση Γλωσσών & Μεταγλωττιστζς

Ενότητα 6: Παραγωγή κώδικα ςυμβολικήσ γλώςςασ

του επεξεργαςτή Pentium

Επ. Καθ. Π. Κατςαρόσ

Τμήμα Πληροφορικήσ

Page 2: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

Άδειεσ Χρήςησ

• Το παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χρήςησ Creative Commons.

• Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που υπόκειται ςε άλλου τφπου άδεια χρήςησ, η άδεια χρήςησ αναφζρεται ρητώσ.

Page 3: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

Χρηματοδότηςη

• Το παρόν εκπαιδευτικό υλικό ζχει αναπτυχθεί ςτα πλαίςια του εκπαιδευτικοφ ζργου του διδάςκοντα.

• Το ζργο «Ανοικτά Ακαδημαϊκά Μαθήματα ςτο Αριςτοτζλειο Πανεπιςτήμιο Θεςςαλονίκησ» ζχει χρηματοδοτήςει μόνο τη αναδιαμόρφωςη του εκπαιδευτικοφ υλικοφ.

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

Page 4: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 4

Παραγωγή κώδικα: Αρτιηεκηονική Pentium Ι 0 7 8 31

AH

BH

CH

DH

AL

BL

CL

DL

AX

BX

CX

DX

SP

BP

SI

DI

CS

SS

DS

FLAGS

15

EAX

EBX

ECX

EDX

ESP

EBP

ESI

EDI

ES

FS

GS

IP EIP

EFLAGS

καηατωρηηές

δεδομένων

καηατωρηηές

διεσθύνζεων

δείκηης ζηοίβας

(κορσθή)

βάζη

σπολογιζμού

διεσθύνζεων δείκηες

διεσθύνζεων

ζε ζτέζη με

μία βάζη

βάζεις ημημάηων

μνήμης

Page 5: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 5

Παραγωγή κώδικα: Αρτιηεκηονική Pentium ΙΙ 0

0 0 0 0

15

0 15

offset

Βάζη ηοσ Τμήμαηος Μνήμης

+

0 19

Διεύθσνζη Μνήμης

ΤΠΟΛΟΓΙΜΟ ΔΙΕΤΘΤΝΗ ΜΝΗΜΗ (real mode): ην πεξηερόκελν ηνπ θαηαρσξεηή ηκήκαηνο κεηαηνπίδεηαη ηέζζεξα bit πξνο

ηα αξηζηεξά (δει. πνιιαπιαζηάδεηαη επί 16)

ζηελ ηηκή πνπ πξνθύπηεη πξνζηίζεηαη ε απόθιηζε

εληνιέο: από ην ηκήκα πνπ ππνδεηθλύεη ν CS (code segment) ζε ζπλδπαζκό κε ηνλ IP (instruction pointer)

δηεύζπλζε εληνιήο: CS:IP

θαηαρώξεζε ή αλάγλσζε δεδνκέλσλ: από ην ηκήκα πνπ ππνδεηθλύεη ν DS (data segment)

πξάμεηο ζηνίβαο: ην ηκήκα ηεο ζηνίβαο ππνδεηθλύεηαη από ηνλ SS (stack segment)

Page 6: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 6

Παραγωγή κώδικα: Αρτιηεκηονική Pentium ΙΙI

Επηθάιπςε ζηελ εθρώξεζε ηκεκάησλ κλήκεο

050005000

14FFF

cs

SS

ES

1700

1888

1700

DS

18880

17000

26FFF

2887F

Page 7: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 7

Παραγωγή κώδικα: Αρτιηεκηονική Pentium ΙV

o EFLAGS είλαη θαηαρσξεηήο ζεκαηώλ

Οη εληνιέο ρξεζηκνπνηνύλ δεδνκέλα ηα νπνία βξίζθνληαη είηε

ζε θαηαρσξεηέο δεδνκέλσλ

είηε ζηελ ίδηα ηελ εληνιή

είηε ζηε κλήκε

Αλάινγα κε ηνλ ηύπν ηεο εληνιήο ηα δεδνκέλα κπνξεί λα είλαη

ελόο byte

κηαο ιέμεο (word)

κηαο δηπιήο ιέμεο (double)

Σνπιάρηζην έλα από ηα δεδνκέλα πξέπεη λα βξίζθεηαη ζε θαηαρσξεηή

Page 8: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 8

Παραγωγή κώδικα: Ενηολές assembly I

MOV πξννξηζκόο, αθεηεξία Η εληνιή MOV θαηαρσξεί ζηνλ πξννξηζκό αληίγξαθν ηνπ δεύηεξνπ ηειεζηένπ. Αλ ν πξννξηζκόο είλαη έλαο από ηνπο θαηαρσξεηέο ηκήκαηνο (DS, ES, SS, FS, GS), ηόηε ε αθεηεξία πξέπεη λα είλαη έλαο από ηνπο θαηαρσξεηέο δεδνκέλσλ.

ADD πξννξηζκόο,αθεηεξία Η εληνιή ADD πξνζζέηεη δύν αθεξαίνπο. Ο πξννξηζκόο δειώλεη ηνλ πξννξηζκό ηνπ απνηειέζκαηνο ηεο πξάμεο, δειαδή όηη ην άζξνηζκα θαηαρσξείηαη ζηνλ θαηαρσξεηή ή ζηε δηεύζπλζε πξννξηζκνύ.

SUB πξννξηζκόο,αθεηεξία Η εληνιή SUB αθαηξεί ην δεύηεξν ηειεζηέν από ηνλ πξώην. Η δηαθνξά θαηαρσξείηαη ζηνλ θαηαρσξεηή ή ζηε κλήκε πξννξηζκνύ. IMUL Πξνζεκαζκέλνο πνιιαπιαζηαζκόο ζε δηάθνξεο κνξθέο κε έλα ή δύν νξίζκαηα.

Page 9: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 9

Παραγωγή κώδικα: Ενηολές assembly IΙ

Η εληνιή IMUL εθηειεί πξνζεκαζκέλν πνιιαπιαζηαζκό. Κάπνηεο κνξθέο ηεο εληνιήο ρξεζηκνπνηνύλ έκκεζα ηειεζηένπο πνπ βξίζθνληαη ζε θαηαρσξεηέο.

IDIV Η εληνιή IDIV εθηειεί πξνζεκαζκέλε δηαίξεζε. Ο δηαηξεηένο πξέπεη λα βξίζθεηαη ζε έλαλ από ηνπο θαηαρσξεηέο AL, AX θαη EAX αλάινγα κε ηνλ ηύπν ηνπ, ελώ ην πειίθν θαη ην ππόινηπν θαηαρσξνύληαη έκκεζα ζε ζπγθεθξηκέλνπο θαηαρσξεηέο. Ο δηαηξέηεο δίδεηαη σο r/m ηειεζηένο.

IMUL r/m8

IMUL r/m16

IMUL r/m32

AXAL*r/m byte

DX: AXAX*r/m word

EDX: EAXEAX*r/m dword

IMUL r16, r/m16

IMUL r32, r/m32

word registerword register*r/m word

dword registerdword register*r/m dword

Page 10: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 10

Παραγωγή κώδικα: Ενηολές assembly IΙI

IDIV AL, r/m8 IDIV AX, r/m16 IDIV EAX, r/m32

Signed divide AX (where AH must contain sign-extension of AL) by r/m byte. (Results: AL=Quo, AH=Rem) Signed divide DX:AX (where DX must contain sign-extension of AX) by r/m word. (Results: AX=Quo, DX=Rem) Signed divide EDX:EAX (where EDX must contain sign-extension of EAX) by r/m dword. (Results: EAX=Quo, EDX=Rem)

PUSH όξηζκα

Η εληνιή PUSH κεηώλεη ην δείθηε ηεο ζηνίβαο θαηά 2 όηαλ ην όξηζκα είλαη 16 bit ή θαηά 4 όηαλ ην όξηζκα είλαη 32 bit. Η εληνιή PUSH ηνπνζεηεί ην όξηζκα ζηελ θνξπθή ηεο ζηνίβαο, ηελ νπνία δείρλεη ν δείθηεο ηεο ζηνίβαο.

Page 11: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 11

Παραγωγή κώδικα: Ενηολές assembly IV

POP όξηζκα

Η εληνιε POP δηαγξάθεη από ηε ζηνίβα ην δεδνκέλν πνπ δείρλεη ν θαηαρσξεηήο SP ή ESP, θαη ην απνζεθεύεη ζην όξηζκα ηεο εληνιήο, πνπ κπνξεί λα είλαη ζέζε κλήκεο, θαηαρσξεηήο ή θαηαρσξεηήο ηκήκαηνο. Ο θαηαρσξεηήο SP απμάλεηαη θαηά 2 γηα 16 bit δεδνκέλν ή θαηά 4 γηα 32 bit δεδνκέλν.

Page 12: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 12

Παραγωγή κώδικα: Παράδειγμα

Παξαγσγή θώδηθα γηα έθθξαζε εθρώξεζεο ηηκήο

x=a*b+c*d-e*f

astAdd

astId (e)

astAssign

astId (a) astId (c)

astId (f)

astId (x) astSub

astMult

astId (d) astId (b)

astMult astMult

Page 13: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 13

Παραγωγή κώδικα: Παράδειγμα (ζσνέτεια)

mov ax,_a

imul _b

push ax

mov ax,_c

imul _d

pop dx

add dx,ax

push dx

mov ax,_e

imul _f

pop dx

sub dx,ax

mov _x,dx

Page 14: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

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

Σεηάξηε, 23 Ινπιίνπ 2014 Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 14

Παραγωγή κώδικα: Παράδειγμα ΙΙ

{ int i,j;

i=2;

j=-6;

print(i*j);

}

.model small .stack 100h

.586

; The Data Segment

.data

_i sword ?

_j sword ?

; The Code Segment

.code

extrn _print_int:proc

extrn _read_int:proc

main proc

mov ax,@data

mov ds,ax

mov _i,2

mov _j,-6

mov ax,_i

imul _j

push ax

call _print_int

pop cx

; Return to the Operating System

mov ax,4c00h

int 21h

main endp

end main

κλήζη

σποπρογράμμαηος

πέραζμα

παραμέηροσ μέζω

ηης ζηοίβας

Page 15: Σχεδίαση Γλωσσών & Μεταγλωττιστζς · 16 bit ή θαά 4 όαλ ν όξηκα ίλαη 32 bit. Η λνιή PUSH νπνζ 0 2 0ί ν όξηκα ελ θνξπή

ΑΡΙΣΟΣΕΛΕΙΟ

ΠΑΝΕΠΙΣΗΜΙΟ

ΘΕΑΛΟΝΙΚΗ

ΑΝΟΙΚΣΑ

ΑΚΑΔΗΜΑΙΚΑ

ΜΑΘΗΜΑΣΑ

Τζλος ενότητας

Επεξεργαςία: Εμμανουζλα Στάχτιαρη Θεςςαλονίκη, 21/07/2014