Wednesday, April 19, 2017

ROSE

"Developed at Lawrence Livermore National Laboratory (LLNL), ROSE is an open source compiler infrastructure to build source-to-source program transformation and analysis tools for large-scale C (C89 and C98), C++ (C++98 and C++11), UPC, Fortran (77/95/2003), OpenMP, Java, Python and PHP applications. 

 The primary goal of the ROSE project is to optimize applications within the U.S. Department of Energy (DOE).

ROSE aims to be:
  • A library (and set of associated tools) to quickly and easily apply compiler techniques to your code in order to improve application performance and developer productivity.
  • A research and development compiler infrastructure for you to write your own custom source-to-source translators to perform source code transformations, analyses, and optimizations.
The features:
  • Cutting-edge research on source- and high-level compiler analysis and optimization algorithms.
  • Best-practice software development to incorporate existing compiler techniques to and develop new ones.
  • Pre-built ROSE tools to perform program transformation, analysis and optimization of your code.
  • An easy-to-use API to help you to build your own customized, or domain-specific compiler-based analysis, transformation, and optimization tools.
ROSE is a library providing users access to compiler technology that was hitherto inaccessible to non-experts.

What is compiler technology? Compilers are sophisticated software that translate source code into machine binaries. Compiler developers have created powerful techniques to parse, analyze, transform and optimize the input source code.

Traditional compilers like GCC use these techniques, but they are essentially inaccessible to the user. However, even if the user had these capabilities in gcc, evaluating the results would be extremely difficult. The user inputs source code, the compiler outputs machine code. The user has access to his own code and perhaps the code generation at the assembly level, but comparing the two is extremely difficult as the code generation involved is not for clarity, it is for the needs of the compiler developer.

But what if a compiler returned a faithful source code representation of the post-transformation changes? Taking the original source code to transformed source code. A source-to-source compiler.

ROSE is a source-to-source compiler.

ROSE gives the user a library of compiler techniques. It also gives the user access to the building blocks of source analysis, allowing the user to create their own compilers, analyzers, translators, preprocessors, and so on."

http://rosecompiler.org/

https://en.wikibooks.org/wiki/ROSE_Compiler_Framework

https://en.wikipedia.org/wiki/ROSE_%28compiler_framework%29

https://github.com/rose-compiler/rose 

No comments:

Post a Comment