slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
ΕΠΛ223 PowerPoint Presentation
Download Presentation
ΕΠΛ223

Loading in 2 Seconds...

play fullscreen
1 / 20

ΕΠΛ223 - PowerPoint PPT Presentation


  • 104 Views
  • Uploaded on

ΕΠΛ223. Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002. Κ. Μουρλάς, Λέκτορας.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'ΕΠΛ223' - tillie


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

ΕΠΛ223

Θεωρία και Πρακτική Μεταγλωττιστών

Εαρινό Εξάμηνο 2002

Κ. Μουρλάς, Λέκτορας

Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους στο υλικό που δόθηκε από τον Επισκέπτη Επίκ. Καθηγητή Γ. Μπαρλά στα πλαίσια αυτού του μαθήματος που διδάχθηκε κατά το ακαδημαϊκό έτος 1999-2000.

slide2
Τι είναι οι μεταγλωττιστές;
  • Μετασχηματισμός από μία αναπαράσταση ενός προγράμματος σε μία άλλη
  • Η τυπική εικόνα

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide3
Το μοντέλο της ανάλυσης-σύνθεσης
  • Synthesis - Analysis
    • Ανάλυση του πηγαίου κώδικα
    • Σύνθεση του κώδικα στην τελική γλώσσα
  • Άλλα προγράμματα που ακολουθούν τον κύκλο αυτό και που σε γενικές γραμμές μπορούν να χαρακτηριστούν μεταγλωττιστές:
    • Συστήματα διαμόρφωσης κειμένου (text formatters, π.χ. TeX)
    • Μεταγλωττιστές σιλικόνης (Silicon Compilers)

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide4
Απαιτήσεις κατασκευής μεταγλωττιστή
  • Απαιτήσεις από τον μεταγλωττιστή
    • αξιοπιστία
    • γρήγορη εκτέλεση
    • μικρές απαιτήσεις σε μνήμη
    • καλά διαγνωστικά μηνύματα
    • δυνατότητα ανάνηψης από λάθη
    • μεταφερσιμότητα
    • εύκολη συντήρηση
  • Απαιτήσεις από τον τελικό κώδικα
    • γρήγορη εκτέλεση
    • μικρές απαιτήσεις σε μνήμη

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide5
Πηγαίος Κώδικας
  • Διαμορφωμένος με στόχο την εύκολη ανάγνωση
    • Εκφραστικός: προσεγγίζει την ανθρώπινη γλώσσα
    • Περιέχει πλεονασμούς

int expr(int n)

{

int d;

d = 4 * n * n * (n + 1) * (n + 1);

return d;

}

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide6
Κώδικας Μηχανής
  • Βελτιστοποιημένος για εκτέλεση από το υλικό
  • Έλλειψη ασάφειας, πλεονασμού
  • Κατακερματισμός της πληροφορίας για τον τελικό στόχο

lda $30,-32($30)

stq $26,0($30)

stq $15,8($30)

bis $30,$30,$15

bis $16,$16,$1

stl $1,16($15)

lds $f1,16($15)

sts $f1,24($15)

ldl $5,24($15)

bis $5,$5,$2

s4addq $2,0,$3

ldl $4,16($15)

mull $4,$3,$2

ldl $3,16($15)

addq $3,1,$4

mull $2,$4,$2

ldl $3,16($15)

addq $3,1,$4

mull $2,$4,$2

stl $2,20($15)

ldl $0,20($15)

br $31,$33

$33:

bis $15,$15,$30

ldq $26,0($30)

ldq $15,8($30)

addq $30,32,$30

ret $31,($26),1

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide7
Πώς θα γίνει η μεταγλώττιση;
  • Σε βήματα : σταδιακή μετατροπή του πηγαίου κώδικα σε ενδιάμεσες αναπαραστάσεις κατάλληλες για τον εκάστοτε κάθε φορά στόχο (π.χ. έλεγχο ορθότητας, βελτιστοποίηση κώδικα κ.α.).
  • Κάθε βήμα απομακρύνει την αναπαράστασή μας από την γλώσσα του πηγαίου κώδικα και πλησιάζει το επίπεδο της μηχανής.

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide8
Οι φάσεις λειτουργίας ενός μεταγλωττιστή

1: Λεκτικές μονάδες (tokens)

2: Συντακτικό δένδρο

3: Ενδιάμεσος κώδικας

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide9
Λεκτική Ανάλυση
  • Έστω η έκφραση

position := initial + rate * 60

  • Ο λεκτικός αναλυτής παράγει την ακόλουθη έξοδο λεκτικών μονάδων:

id(1) op(:=) id(2) op(+) id(3) op(*) cons(60)

όπου id:identifier, op:operator και cons:constant

  • Ο πίνακας συμβόλων έχει ως εξής:

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide10
Συντακτική Ανάλυση
  • Η συντακτική ανάλυση κατασκευάζει μία δομή που περιγράφει τις σχέσεις των λεκτικών μονάδων

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide11
Σημασιολογική Ανάλυση
  • Π.χ. έλεγχος των παραμέτρων ενός τελεστή και τροποποίηση του συντακτικού δένδρου

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide12
Ενδιάμεσος Κώδικας & Βελτιστοποίηση
  • Ενδιάμεσος Κώδικας

temp1 := int_2_real(60)

temp2 := id(3) * temp1

temp3 := id(2) + temp2

id(1) := temp3

  • Βελτιστοποίηση:

temp1 := id(3) * 60.0

id(1) := id(2) + temp1

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide13
Η γενικότερη εικόνα

Source code

Compiler

Κώδικας σε γλώσσα Assembly

Assembler

Κώδικας μηχανής

Linker

Εκτελέσιμο πρόγραμμα

ΟS Loader

Εκτέλεση

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide14
Οργάνωση σε εμπρόσθιο και οπίσθιο τμήμα

Πλεονεκτήματα:

π.χ. Κ μεταγλωττιστές για Ν τελικούς Η/Υ

Χρειαζόμαστε: N οπίσθια τμήματα

& K εμπρόσθια,

αντί Κ*Ν μεταγλωττιστές

Front end

(machine-independent)

Back end

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide15
Οργάνωση σε περάσματα
  • Πέρασμα (pass) : ανάγνωση του πηγαίου κώδικα

Ο αριθμός των περασμάτων εξαρτάται από την αρχική και τελική γλώσσα καθώς και το περιβάλλον εκτέλεσης του μεταγλωττιστή (λιγότερη μνήμη = λιγότερα περάσματα).

  • Pascal : 1 πέρασμα
  • Algol 68 : 3 περάσματα
  • Αναδρομική κατάβαση (backpatching) για περιορισμό των περασμάτων

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide16
Ένας απλός μεταγλωττιστής
  • Πρόβλημα: Δημιουργία ενός μεταγλωττιστή για μετατροπή αριθμητικών εκφράσεων από προθεματικό (infix) σε επιθεματικό (postfix) συμβολισμό . Π.χ. 3+4*5 3 4 5 * +
  • Ο επιθεματικός συμβ. είναι κατάλληλος για εκτέλεση από μηχανές που χρησιμοποιούν στοίβα.
  • Προσδιορισμός - Περιγραφή της γλώσσας σε επίπεδο:
    • Συντακτικό
    • Σημασιολογικό

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide17
Παράδειγμα Γραμματικής

Για την μετατροπή από προ- σε επιθεματικό κώδικα

1. expr = expr + expr

2. expr = expr - expr

3. expr = expr * expr

4. expr = expr / expr

5. expr = ( expr )

6. expr = digit

7. digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide18
Συντακτικό Δένδρο
  • Δένδρο με κόμβους:
    • Ρίζα το αρχικό σύμβολο της γραμματικής
    • Εσωτερικούς κόμβους που αντιστοιχούν σε μη-τερματικά σύμβολα
    • Φύλλα που αντιστοιχούν σε τερματικά σύμβολα.
  • Συντακτικός αναλυτής (parser): κατασκευάζει το συντακτικό δένδρο.

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide19
Είδη συντακτικής ανάλυσης
  • Από κάτω προς τα πάνω
  • Από πάνω προς τα κάτω

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών

slide20
Υλοποίηση Παραδείγματος

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών