Processor Probes

SH Optimizing Compilers

The Green Hills Optimizing Compilers for SH all utilize a common code generator
with architecture-specific optimizations. Each supported SH model has its own
particular optimization and instruction set characteristics. In addition for
the SH-2A architecture, Green Hills offers CodeFactor®, a link-time optimization
that reduces overall program size by identifying and removing redundant segments
of code from object files. In certified EEMBC benchmarks, CodeFactor reduced
code size an additional 10%. These are accommodated in the code generator to
produce code best suited for the target processor. The Green Hills SH Optimizing
Compilers support the following SH-specific features:

Processor - One option for each supported SH model. This setting
determines the instructions permitted, as well as the pipeline optimization
strategy used.

Position Independent Code (PIC)- Allows executable files and data
to be placed anywhere in memory and still run correctly.

Little Endian - Causes programs to be compiled and assembled using
a little-endian memory model (the default is big-endian).

All Floating Point is single precision - This option will cause "double" to
be interpreted as "float" so no 64-bit instructions will be required
for floating point operations.

Disable use of MACH, MACL, and GBR by compiler - Prevents the compiler
from using the MACH, MACL, or GBR registers as general purpose, permanent
registers.

Large switch statements - Allows large switch statements by forcing
the compiler to use a 32-bit offset, which works regardless of the destination
label.

Small Data Area - The SH processor requires a literal pool entry
to compute an arbitrary 32-bit address. The Green Hills compilers enable
the user to collect frequently accessed variables into a block of memory,
accessible via offsets from the GBR register, instead of requiring a pool
entry thereby saving code size and improving performance.

Source Level Support/Extensions for SH-DSP
C and C++ programmers can take advantage of the parallel memory access and
fixed point instructions and registers provided by the SH-DSP by using the
special DSP features supported by the Green Hills C/C++ compilers, including:

X and Y Parallel Memory Access

Zero Overhead Loops

Fixed Point Data Type Class Support in C++

Run-Time libraries
A comprehensive suite of run-time libraries for C, C++, and EC++ are included
in the corresponding compiler distributions for each language. Several different
versions of the libraries are provided to accommodate different combinations
of processor and memory models. The combinations include hardware vs. software
floating point, big endian vs. little endian memory models and CPU specific
versions. Full featured start-up code and libraries include automatic copy
of data from ROM to RAM and system call emulation. Source code to the run-time
libraries is available so that users can customize routines according to the
special needs of their applications.