SDCC is a freeware, retargettable, optimizing ANSI-C compiler. The current version targets Intel 8051-based MCUs, the Zilog Z80, and the DS390. Targets for the Microchip PIC and Amtel AVR series are under development, and the compiler can be retargeted for other 8 bit MCUs or PICs.
The entire source code for the compiler is distributed under GPL. SDCC uses ASXXXX and ASLINK, a freeware, retargettable assembler & linker. SDCC has extensive MCU (8051)-specific language extensions, which lets it utilize the underlying hardware effectively.
SDCC includes a source-level debugger/simulator and can generate debug info for the NoICE debugger.
Here are some key features of "SDCC":
· ASXXXX and ASLINK, a Freeware, retargettable assembler and linker.
· extensive MCU specific language extensions, allowing effective use of the underlying hardware.
· a host of standard optimizations such as global sub expression elimination, loop optimizations (loop invariant, strength reduction of induction variables and loop reversing ), constant folding and propagation, copy propagation, dead code elimination and jump tables for 'switch' statements.
· MCU specific optimisations, including a global register allocator.
· adaptable MCU specific backend that should be well suited for other 8 bit MCUs
· independent rule based peep hole optimizer.
· a full range of data types: char (8 bits, 1 byte), short (16 bits, 2 bytes), int (16 bits, 2 bytes), long (32 bit, 4 bytes) and float (4 byte IEEE).
· the ability to add inline assembler code anywhere in a function.
· the ability to report on the complexity of a function to help decide what should be re-written in assembler.
· a good selection of automated regression tests.
What's New in This Release:
· This release added a predefined preprocessor macro for holding SDCC's subversion revision number, various preprocessor macros, an updated preprocessor, multiple infiles for sdcclib, support for many PIC devices, generation of cdb debug info for various platforms, tail call optimization for functions that take no parameters on Z80, and improved multiplication of unsigned chars on Z80.
· There were also numerous enhancements and bugfixes.