Next: 1.2 Open Source
Up: 1. Introduction
Previous: 1. Introduction
Contents
Index
SDCC (Small Device C Compiler)
is an open source, retargettable, optimizing ANSI-C compiler by Sandeep
Dutta designed for 8 bit Microprocessors. The current version targets
Intel MCS51 based Microprocessors (8031, 8032, 8051, 8052,
etc.), Dallas DS80C390 variants, Freescale (formerly Motorola) HC08
and Zilog Z80 based MCUs. It can be retargetted for other microprocessors,
support for Microchip PIC, Atmel AVR is under development. The entire
source code for the compiler is distributed under GPL. SDCC uses ASXXXX
& ASLINK, an open source retargettable assembler &
linker. SDCC has extensive language extensions suitable for utilizing
various microcontrollers and underlying hardware effectively.
In addition to the MCU specific optimizations SDCC also does a host
of standard optimizations like:
- global sub expression elimination,
- loop optimizations (loop invariant, strength reduction of induction
variables and loop reversing),
- constant folding & propagation,
- copy propagation,
- dead code elimination
- jump tables for switch statements.
For the back-end SDCC uses a global register allocation scheme which
should be well suited for other 8 bit MCUs.
The peep hole optimizer uses a rule based substitution mechanism which
is MCU independent.
Supported data-types are:
type |
width |
default |
signed range |
unsigned range |
bool |
1 bit |
unsigned |
- |
0, 1 |
char |
8 bits, 1 byte |
signed |
-128, +127 |
0, +255 |
short |
16 bits, 2 bytes |
signed |
-32.768, +32.767 |
0, +65.535 |
int |
16 bits, 2 bytes |
signed |
-32.768, +32.767 |
0, +65.535 |
long |
32 bits, 4 bytes |
signed |
-2.147.483.648, +2.147.483.647 |
0, +4.294.967.296 |
float |
4 bytes IEEE 754 |
signed |
|
|
pointer |
1, 2, 3 or 4 bytes |
generic |
|
|
The compiler also allows inline assembler code to be embedded
anywhere in a function. In addition, routines developed in assembly
can also be called.
SDCC also provides an option (--cyclomatic) to report the relative
complexity of a function. These functions can then be further optimized,
or hand coded in assembly if needed.
SDCC also comes with a companion source level debugger SDCDB, the
debugger currently uses ucSim a freeware simulator for 8051 and other
micro-controllers. SDCDB and ucSim are currently not available on
Win32 platforms.
The latest version can be downloaded from http://sdcc.sourceforge.net/snap.php.Please note: the compiler will probably always be some
steps ahead of this documentation1.1.
Next: 1.2 Open Source
Up: 1. Introduction
Previous: 1. Introduction
Contents
Index
2007-03-25