Please use this identifier to cite or link to this item: http://artemis.cslab.ece.ntua.gr:8080/jspui/handle/123456789/16170
Title: Σχεδίαση Και Υλοποίηση Ενός Μεταγλωττιστή Κώδικα Μηχανής Για Τη Γλώσσα Erlang Με Χρήση Της Llvm
Authors: Γιάννης Τσιούρης
Χρήστος Σταυρακάκης
Σαγώνας Κωστής
Keywords: erlang
μεταγλωττιστής hipe
μεταγλώττιση κώδικα μηχανής
βιβλιοθήκη llvm
οπίσθιο τμήμα
συμβολική γλώσσα υψυλού επιπέδου
μετάφραση ενδιάμεσης απεικόνισης
βελτιστοποιήσεις χρόνου μεταγλώττισης
Issue Date: 13-Nov-2011
Abstract: Στις μέρες μας, οι υπάρχοντες μεταγλωττιστές ανοιχτού κώδικα χρησιμοποιούναπαρχαιωμένες τεχνικές παραγωγής κώδικα μηχανής και δεν μοιράζονται μεταξύ τουςκώδικα υλοποίησης. Επιπλέον, αποτελούνται από πολύπλοκο κώδικα υλοποίησης,γεγονός που καθιστά δύσκολο το να μελετηθούν και ακόμα πιο δύσκολο το νααλλάξουν. Η Low Level Virtual Machine (LLVM) είναι μια βιβλιοθήκη τελευταίαςτεχνολογίας για μεταγλωττιστές. Παρέχει ένα σύνολο από επαναχρησιμοποιήσιμαεργαλεία που υλοποιούν τις καλύτερες τεχνικές μεταγλώττισης και στατικήςανάλυσης, εστιάζοντας στην επίδοση του παραγόμενου κώδικα και στο χρόνομεταγλώττισης. Ο απώτερος στόχος της LLVM είναι να παρέχει ανεξάρτηταεξαρτήματα για την κατασκευή υψηλής ποιότητας μεταγλωττιστών για πολλέςδιαφορετικές γλώσσες.Η διπλωματική αυτή περιγράφει την παρούσα αρχιτεκτονική, τις βασικές σχεδιαστικέςαποφάσεις και κάποιες λεπτομέρειες υλοποίησης ενός νέο οπίσθιου τμήματος γιατον HiPE, το μεταγλωττιστή κώδικα μηχανής του συστήματος της Erlang/OTP, πουχρησιμοποιεί την υποδομή της LLVM. Διαπιστώθηκε πως μία από τις ενδιάμεσεςγλώσσες του HiPE, η Register Transfer Language (RTL), έχει πολύ απλή καιπροφανή απεικόνιση στη συμβολική γλώσσα της LLVM. Παρόλα αυτά, υπήρχαν κάποιαλεπτά σημεία, όπως η σύμβαση κλήσης συναρτήσεων, ο μηχανισμός χειρισμούεξαιρέσεων και η συλλογή σκουπιδιών, που απαιτούσαν ειδικούς χειρισμούς για ναδιατηρηθεί η συμβατότητα με το Application Binary Interface (ABI) τουΣυστήματος Χρόνου-Εκτέλεσης της Erlang (Erlang Run-Time System) και κατ'επέκταση η ενσωμάτωση της δουλειάς μας να γίνει διατηρώντας την υπάρχουσααρχιτεκτονική της Εικονικής Μηχανής. Γι' αυτούς τους λόγους χρειάστηκε νααλλάξουμε τo Εξάρτημα Παραγωγής Κώδικα της LLVM, εφαρμόζοντας τους κανόνες πουεπέβαλλε το ABI στον παραγόμενο κώδικα.Στο κεφάλαιο της αξιολόγησης αναλύουμε λεπτομερώς την τρέχουσα πολυπλοκότητακαι την επίδοση του νέου οπίσθιου τμήματος που υλοποιήσαμε με χρήση της LLVMγια την οικογένεια επεξεργαστών AMD64. Οι χρόνοι εκτέλεσης τωνμετρο-προγραμμάτων που μεταγλωττίστηκαν στο δικό μας οπίσθιο τμήμα ήτανσυγκρίσιμοι με εκείνους των προγραμμάτων που μεταγλωττίστηκαν στο υπάρχωνοπίσθιο τμήμα του HiPE, και σημαντικά πιο μικροί από εκείνων της EικονικήςMηχανής BEAM και της Erjang, η οποία είναι μια εικονική μηχανή για την Erlangβασισμένη στην Εικονική Μηχανή της Java (JVM). Η πολυπλοκότητα του τμήματός μαςαποδείχθηκε σημαντικά μικρότερη. Ιδιαιτέρως αν λάβει κανείς υπόψιν του ότι, μεσχετικά απλές επεκτάσεις, το οπίσθιο τμήμα που υλοποιήσαμε μπορεί να καλύψειόλες τις αρχιτεκτονικές επεξεργαστών που σήμερα υποστηρίζει ο HiPE. Αρκετέςβελτιώσεις έχουν ήδη προγραμματιστεί ως αντικείμενο μελλοντικής εργασίας.
URI: http://artemis-new.cslab.ece.ntua.gr:8080/jspui/handle/123456789/16170
Appears in Collections:Διπλωματικές Εργασίες - Theses

Files in This Item:
File SizeFormat 
DT2011-0272.pdf704.16 kBAdobe PDFView/Open


Items in Artemis are protected by copyright, with all rights reserved, unless otherwise indicated.