X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=README;h=de1446ac884db078d6ff0e4c85c22c973c3506c4;hb=cd05b35df4f0a2af7c4edc94e37f973843e9a547;hp=b8a83f450f2a2cab549f9ef821f5647b14e1ee85;hpb=4ee068a0c45f583892cc29ed79196d58dd474fa7;p=libfirm diff --git a/README b/README index b8a83f450..de1446ac8 100644 --- a/README +++ b/README @@ -1,21 +1,83 @@ + libFirm + A graph based SSA intermediate representation -This is a library implementing the intermediate representation FIRM -developed at IPD Goos, Uni Karlsruhe. +Contents: +1. Introduction +2. Building and Installation +3. Usage +4. Contact -Create an architecture dependent directory (eg 'mkdir i686-linux') an -cd to it. Call ../configure with wanted features (see ../configure ---help for more hints). Call 'make' to construct the library. This -creates a file libfirm.a +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To test the library goto .//testprograms and call 'make test' -there. +1. Introduction -If you have set up the include and libdir using configure you can -install the library and its headers by 'make install'. This is -encouraged if the library is hooked up to any other modules, e.g., a -front end. +The Firm library implements the Firm intermediate representation (ir). An old +description of Firm can be found in [TLB:99]. + +libFirm contains algorithms for construction of the SSA form directly from the +attributed syntax tree. A set of analyses and optimisation phases is provided. +This version includes a complete backend for the IA32 architecture, as well as +some unfinished backends for MIPS, ARM, PPC32. + +1.1. Features + +- works exculsively on a graph based SSA represenation up to the code emission. + Based on the work of C. Click and M. Trapp +- written in portable C. Known to run on msvc 6-8 Win32, gcc on Linux, FreeBSD, + Cygwin +- includes doxygen documentation +- support for object oriented type hierarchies +- Analyses: dominance, loop tree, execution frequency, control dependencies, + inter procedural call graph, rapid type, def-use, alias analysis, + class hierarchy analysis, ... +- Optimisations: constant folding, local common subexpression elimination, + global common subexpression elimination, code placement, + operator strength reduction, scalar replacement, load/store, + control flow optimisations, if-conversion, partial condition + evaluation, reassociation, tail recursion elimination, + inlining, procedure cloning, dead code elimination... +- local common subexpression eliminiation, constant folding, + constant propagatation, arithmetic identities happen implicitely +- extensive checkers +- enhanced debugging support: breakpoints on node creation, entity creation, + graph dumping, visual studio debug extension +- lowering of intrinsics, double word arithmetics, bitfields +- backend with SSA based register allocation including several algorithms for + spilling and copy coalescing. Instruction and block scheduling, support for + ABI handling. +- working ia32 backend with support for x87 and SSE2 floating point +- unfinished backends for MIPS, ARM, PPC32 + +- connections to the Edison Design Group C and java frontends available. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +2. Building and Installation + +These are instruction for the gcc compiler on unix variants or cygwin. You need +to have the libcore library and pkg-config installed. + + 1. Change into the directory containing libfirms source + + 2. Create a directory named build 'mkdir build'. Change into this directory + and execute the configure script. 'cd build ; ../configure' + + 3. Type 'make' to compile the package + + 4. You may install libfirm as super user by typing 'make install' + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +3. Usage To generate FIRM code from a compiler frontend read the documentation "libFIRM: A Library for Compiler Optimization Reaserch Implementing Firm", UKA tech-report 2002-5. About Firm you can learn in UKA tech-report 1999-14. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +4. Contact + +You can contact us at firm@ipd.info.uni-karlsruhe.de