X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=README;h=3e873a320c5721244bff4368e6de5aa5658354bb;hb=1552a7cecf3066be6397e8d8ed64cbfa505efd56;hp=f8eb006b32528f2bb3ca74a9777c143b63af0b68;hpb=ded06ce77759c9f2f15ab455ac0e4418df81d169;p=libfirm diff --git a/README b/README index f8eb006b3..3e873a320 100644 --- a/README +++ b/README @@ -1,24 +1,90 @@ + 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 depend; make' to construct the library. This -creates a file libfirm.a +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To test the library goto ./testprograms and make and run the -test examples placed there: +1. Introduction -make depend; make -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]. -if you have set up the include and libdir using configure you can install -the library and its headers by 'make install' +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 -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-44. +"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