SDCC (Small Device C Compiler)
is free open source, retargettable, optimizing standard (ANSI C89
/ ISO C90, ISO C99, ISO C11 / ISO C17) C compiler suite originally
written 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 based
(hc08, s08), Zilog Z80 based MCUs (Z80, Z180, eZ80 in Z80 mode, gbz80,
Rabbit 2000/3000, Rabbit 3000A ),
Toshiba TLCS-90, Zilog eZ80 in Z80 mode, STMicroelectronics STM8 ,
Padauk PDK14 and PDK15. It can be retargeted for other microprocessors,
support for Microchip PIC and Padauk PDK13 is under development. The
entire source code for the compiler is distributed under GPL. SDCC
uses a modified version of ASXXXX
& ASLINK, free open source retargetable assembler &
linker. SDCC has extensive language extensions suitable for utilizing
various microcontrollers and underlying hardware effectively.
You might also want to have a look at the wiki http://sdcc.sourceforge.net/wiki/.
In addition to the MCU specific optimizations SDCC also does a host
of standard optimizations like:
type | width | default | signed range |
unsigned range
|
_Bool / bool | 8 bits, 1 byte | unsigned | - |
0, 1
|
char | 8 bits, 1 byte | unsigned | -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.295
|
long long1.1 | 64 bits, 8 bytes | signed |
|
|
float | 4 bytes similar to IEEE 754 | signed |
1.175494351E-38, 3.402823466E+38
|
|
pointer | 1, 2, 3 or 4 bytes | generic |
|
|
__bit1.2 | 1 bit | unsigned | - |
0, 1
|