Repository logo
 

Search Results

Now showing 1 - 2 of 2
  • DOLPHIN - a system for compilers development, teach and use
    Publication . Matos, Paulo; Henriques, Pedro
    DOLPHIN is a framework conceived to help the development of compilers. It is based on model of code representation, designated by DOLPHIN Internal code Representation (DIR), which is enough abstract, flexible and powerful to be used on almost all compilation tasks. The framework contains several components, implemented over the DIR, that can be combined to build multiple language retargetable compilers. It supplies front-ends for several programming languages, back-ends for several computer architectures and a large number of code analysis and optimizations routines. Except for some specific points, the DOLPHIN framework is not by itself an innovator project, but the away how we intend to use and the applications that we intend to give to this framework, are by themselves quite different and innovative comparing with all the other projects that we know on this area. This paper proposes a full architecture, based on the DOLPHIN framework that integrates a large set of services related with compilers users, developers and teachers.
  • The design of a framework for compilers development
    Publication . Matos, Paulo; Henriques, Pedro
    DOLPHIN framework is a solution conceived to support the development of modular compilers. Its supplies a large set of components, like: front-end’s, back-end’s, code analysis, code optimizations and measure components that can be combined to build new compilers. All these components work over a single form of intermediate code representation, the DOLPHIN Internal code Representation. The main principle that guides the conception of DOLPHIN framework was to build a user-friendly solution to develop high quality compilers. Such solution was achieved based on three main concepts: components, components reuse and data consistency. This paper, that aims to present the architectural design of DOLPHIN framework, demonstrates: how the concepts presented above influence the framework architecture; how they were ”implemented” on the framework, namely shows the interfaces defined for the components and for the code representation; how the components are related; how to use the components to implement concrete compilers; and how to evolve the components and the framework to support new features.