TMS320C54x Optimizing C Compiler/Assembler/Linker
Development Tool Part Numbers
Speedy development and code maintenance over the life cycle of a product are concerns that all developers share. TI supports DSP developers with a family of floating point code generation tools for the TMS320 DSPs. The TI optimizing C compilers translate ANSI-standard, C language files into highly efficient TMS320 assembly language source files, which are then input to the TMS320 assembler/linker.
TI C compilers are complemented by the standard TMS320 programmer's interface for debugging C and assembly source code. The C compilers produce a rich set of debugging information, which allows source-level debugging in C to enhance productivity and shorten the application development cycle.
The TMS320C54x Optimizing C Compiler/Assembler/Linker, was designed with three major efficiency goals in mind:
- Produce compiled general-purpose C code that approaches the performance
of hand-coded assembly language.
- Provide a simple and accessible programming interface to the C run-time
environment so that critical DSP algorithms, demanding extreme performance,
can be implemented in assembly language.
- Establish a comprehensive, easy-to-use tool set for the development of
high-performance DSP applications in C.
Additional key features of the TMS320 C code generation tools include:
- ANSI standard runtime-support library
- ROM-able, relocateable, and re-entrant code
- A C shell program that facilitates one-step translation from C source to executable code
The C Compiler accepts ANSI C source code and produces efficient
C54x assembly language source code, performing a wide variety of optimizations
to improve the efficiency of the compiled code. The compiler incorporates four
levels of state-of-the-art generic and target-specific optimizations. The
level of optimizations is selectable. The C compiler was validated with the
Perenial, Plum-Hall C Validation Suite and the K&R Test.
Optimizations include:
Specific TMS320C54x Optimizations
- Cost-based register allocation,
- Autoincrement addressing,
- Repeat blocks,
- Delay branches, calls, and returns.
General Optimizations
- Branch optimizations/control-flow simplification,
- Algebraic reordering, symbolic simplification, constant folding,
- Alias disambiguation,
- Copy propagation,
- Common subexpression elimination,
- Redundant assignment elimination,
- Loop induction variable optimizations/strength reduction,
- Loop rotation,
- Loop invariant code motion,
- Inline expansion of function calls,
- File level optimizations.
The C compiler package includes:
A shell program that calls the individual programs with the
desired options. The shell program can call the parser, the optimizer, the
code generator, the interlist utility, the assembler, and the linker.
The parser reads the C source code file, performs preprocessing
functions, verifies the syntax, and produces an intermediate file that
is used as an input to the optimizer or code generator.
The optimizer reads the intermediate file generated by the
parser, and performs various general and target specific optimizations to
improve the execution speed of the program.
The code generator reads the intermediate file generated
by the parser or the optimizer and converts it to a C54x assembly
source code file.
The interlist utility adds comments containing the C source
code within the assembly language source code file.
The assembler translates assembly language source code into machine language
COFF object files. It also supports a macro language that enables users
to create their own "instructions".
The archiver allows you to manage archive files (also called libraries)
which consist of a collection of source code files or COFF object files.
The run-time support archive is a collection of C, C header and
assembly language source files that implement ANSI standard runtime-support
functions.
The library-build utility allows you to build a COFF object
library from a source code archive.
The linker allows you to combine COFF object files into a single
executable COFF output file. The linker allocates relocatable sections,
symbols and resolves external references between input files.
The hex conversion utility allows you to convert an executable COFF
output file into ASCII-Hex, Intel MSC-86, Extended Tektronix, Motorola-S, or
TI-Tagged Object file format that can be used as input to an EPROM programmer.
The cross-reference utility accepts linked object files
and produces a listing of all symbols, their definitions, including the names
of linked source files where they are defined and referenced.
The absolute lister accepts linked object files and
produces an file that can be used with the assembler to produce an abolute
listing file that contains the absolute addresses of all assembled instructions.
|