X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=README;h=10ca55d4ac96828ebd307ca8988e88ecf7365a3b;hb=523e83e345a3dddd5bb82d8090aa26de3b290df3;hp=1fadbc053f9dc6978ddee7da10f8d0d4ffe83a54;hpb=3d16844cfe86402baf7e82c87facf630ee336b73;p=libfirm diff --git a/README b/README index 1fadbc053..10ca55d4a 100644 --- a/README +++ b/README @@ -1,19 +1,89 @@ + 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 -Call make lib to construct the library. This creates a file -libfirm.a and extracts all necessary header files to ./include. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To test the library goto ./testprograms and make and run the -test examples placed there: +1. Introduction -make lib -cd testprograms -make -make run +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. + + 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 -For more documentation see /include/firm.h. To generate FIRM code from a compiler frontend read the documentation -in ./include/ircons.h. -About Firm you can learn in UKA tech-report 1999-??. +"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 + +There's a mailing list here: + https://lists.sourceforge.net/lists/listinfo/libfirm-user + +We have a bugtracker at: + http://pp.info.uni-karlsruhe.de/~firm/bugs