ROSE compiler framework
Encyclopedia
The ROSE compiler framework, developed at Lawrence Livermore National Laboratory
Lawrence Livermore National Laboratory
The Lawrence Livermore National Laboratory , just outside Livermore, California, is a Federally Funded Research and Development Center founded by the University of California in 1952...

 (LLNL), is an open source compiler
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 infrastructure to generate source-to-source analyzers and translators for multiple source languages
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

 including C, C++, and Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...

. It also supports OpenMP
OpenMP
OpenMP is an API that supports multi-platform shared memory multiprocessing programming in C, C++, and Fortran, on most processor architectures and operating systems, including Linux, Unix, AIX, Solaris, Mac OS X, and Microsoft Windows platforms...

, UPC
Unified Parallel C
Unified Parallel C is an extension of the C programming language designed for high-performance computing on large-scale parallel machines, including those with a common global address space and those with distributed memory...

 and certain binary files. Unlike most other research compilers, ROSE is aimed to enable non-experts to leverage compiler technologies to build their own custom software analyzers and optimizers.

The infrastructure

ROSE consists of multiple front-ends, a midend operating on its internal intermediate representation (IR), and backends regenerating (unparse) source code from IR. Optionally, vendor compilers can be used to compile the unparsed source code into final executables.

ROSE uses the Edison Design Group's C++ front-end to parse C and C++ applications. Fortran support, including F2003 and earlier F77/90/95 versions, is based on the Open Fortran Parser (OFP) developed at Los Alamos National Laboratory
Los Alamos National Laboratory
Los Alamos National Laboratory is a United States Department of Energy national laboratory, managed and operated by Los Alamos National Security , located in Los Alamos, New Mexico...

.

The ROSE IR consists of an abstract syntax tree
Abstract syntax tree
In computer science, an abstract syntax tree , or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language. Each node of the tree denotes a construct occurring in the source code. The syntax is 'abstract' in the sense that it...

, symbol tables, control flow graph, etc. It is an object-oriented IR with several levels of interfaces for quickly building source-to-source translators. All information from the input source code is carefully preserved in the ROSE IR, including C preprocessor control structure, source comments, source position information, and C++ template information (e.g., template arguments).

ROSE is released under a BSD-style license. It targets Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 and Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

 on both IA-32
IA-32
IA-32 , also known as x86-32, i386 or x86, is the CISC instruction-set architecture of Intel's most commercially successful microprocessors, and was first implemented in the Intel 80386 as a 32-bit extension of x86 architecture...

 and x86-64
X86-64
x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets. x86-64 also provides 64-bit general purpose registers and numerous other...

 platforms. Its EDG
Edison Design Group
The Edison Design Group is a company that makes compiler frontends . Their frontends are widely used in commercially available compilers and code analysis tools. Users include the Intel C++ compiler, SGI MIPSpro, The Portland Group, and Comeau C++...

 parts are proprietary
Proprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...

 and distributed in binary form. Source files of the EDG parts can be obtained if users have a commercial or research license from EDG.

Award

The ROSE compiler infrastructure has received one of the 2009 R&D 100 Awards. The R&D 100 Awards are presented annually by R&D Magazine to recognize the 100 most significant proven research and development
Research and development
The phrase research and development , according to the Organization for Economic Co-operation and Development, refers to "creative work undertaken on a systematic basis in order to increase the stock of knowledge, including knowledge of man, culture and society, and the use of this stock of...

 advances introduced over the past year. An independent expert panel selects the winners.

See also

  • DMS Software Reengineering Toolkit
    DMS Software Reengineering Toolkit
    The DMS Software Reengineering Toolkit is a proprietary set of program transformation tools available for automating custom source program analysis, modification, translation or generation of software systems for arbitrary mixtures of source languages for large scale software systems.DMS has been...

  • Stratego/XT
    Stratego/XT
    Stratego/XT is a language and toolset for constructing stand-alone program transformation systems.It combines the Stratego transformation language with the XT toolset of transformation components, providing a framework for constructing stand-alone...

  • TXL
    TXL (programming language)
    TXL is a special-purpose programming language originally designed by Charles Halpern-Hamu and James Cordy at the University of Toronto in 1985. The acronym "TXL" originally stood for "Turing eXtender Language" after the language's original purpose, the specification and rapid prototyping of...

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK