|
Raisonance bases its C compiler on a unique and well-tried
technology and personalizes them according to the features of
each specific processor architecture.
Optimizations
Classical optimizations are implemented in each RC-xx C
compiler (RC-51, RC-XA, RCST7, RC-ST6,...):
- Constant propagation: when a local variable is assigned a
constant value, subsequent references may be resolved at 'compile-time'.
For example:
{
int x = 1 ;
int y = x+1 ; /* y is assigned the value 2 at 'compile-time'
*/
/*....*/
}
- Jump optimizations: any series of jumps is simplified.
- Elimination of the useless code: the compiler can recognize
that some code is "in-accessible". It warns the programmer
and removes the redundant code from the object file(s).
- Use of variables in CPU registers;: local variables are
automatically located in registers when it is possible in order
to improve performance.
- Function parameters are placed in registers whenever possible.
- Elimination of common sub-expressions: the results of complex
common sub-expressions are saved in registers for rapid reuse.
- Loop rotation: simple loops used in initialization as buffers
are recognized and optimized. According to the instruction set,
loop variables are optimized in registers and eventually "adapted"
to generate the best code.
- Optimization of the "switch" instruction: the constant
values associated with different 'cases' are successively tested
with results in different code structures depending whether the
preferred optimization is to maximize the speed or minimize the code
size.
In addition, further optimization is undertaken by the linker.
Reliability
During design and maintenance of each C compiler, Raisonance applies
strict rules for quality control and applies various test suites:
- On suite consists of a wide set of programs, including an "anti-regression"
test. Whenever a bug is reported, Raisonance strives to make
it appear in a specific test program, which is then added to
the "anti-regression" tests in order to ensure non-regression
extends to all of our compilers. This suite tries to guarantee
both the reliability and overall performance of C compilers.
- Another (commercial) suite ensures that Raisonance compilers
conform to ANSI standards. This suite strengthens the control
over non-regression.
Other common features:
- C Compilers generate "object" files that are compliant
with those produced by our assemblers. In addition an assembly
source file can be produced.
- RCxx Compiler libraries are written in assembler to maximize
performance while minimizing code size.
- Different listings are available. For example pre-processing,
compilation listing, assembler source file, cross-reference
table
etc.
Complete debug information is generated to allow source level
debugging.
Different C Compiler have been developed by Raisonance:

|