SDCC

Official Home of SDCC

What is SDCC ?

> SDCC is a Free ware , retargettable, optimizing ANSI - C compiler. The current version targets Intel 8051 based MCUs, it can be retargeted for other 8 bit MCUs or PICs. The entire source code for the compiler is distributed under GPL. SDCC uses ASXXXX & ASLINK a Free ware, retargettable assembler & linker. SDCC has extensive MCU (8051) specific language extensions, which lets it utilize the underlying hardware effectively. The front end (parser) will be enhanced to handle language extensions for other MCUs as and when they are targeted. 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 and 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 short (8 bits, 1 byte), char (8 bits, 1 byte) , int (16 bits, 2 bytes ), long (32 bit, 4 bytes) & float (4 byte IEEE). SDCC also comes with a source level debugger SDCDB, the current version of the debugger uses Daniel's s51 simulator. 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 to report the relative complexity of a function, these functions can then be further optimized , or hand coded in assembly if need be.

Download [Sun Jul 4 15:02:18 CDT 1999]

To compile SDCC, Linux ( and other Unix ) users will need to install gcc or any other C compiler. Windows 95/NT users will need to download the full development version of CYGWIN32 from http://sourceware.cygnus.com/cygwin/ . Note that cygnus distributes CYGWIN32 in two packages you will need the full development package, this contains the compiler and other utilities that you will need to compile SDCC, I have not tried compiling the system with any other compiler under MS/Windows.

Version 2.1.8 onwards will be distributed in *.tar.gz format, the installation procedure will also change. Installation section of the documentation has been updated to include the new procedure. Click here to download sdcc-2.1.8Ia.tar.gz in the new distribution format. This distribution also contains Daniel's simulator .

Binary distribution of Version 2.1.8Ia for Windows is available . The distribution is compiled to run from the directory /usr/local. Gunzip & untar the binary distribution at the root (/) directory of the partition/drive you want to install the software on. The source distribution of this version compiles with CYGWIN. Click here to view more detailed installation instructions for Win95/NT (provided by Michael Jamet mjamet@computer.org ).

Join our mailing list! Enter your email address below, then click the 'Join List' button:
Powered by ListBot

You can view the archive of messages posted to the mailing list (poor man's FAQ).

Click here for SDCC Message Board , maintained by Alex Ratzefumm <ratzefumm@gmx.net> .

Documentation

SDCC User Guide :

- HTML Format (included with Source bundle)
- PostScript Format (Not included with Source Bundle)
- Plain Text Format. (Not included with source bundle)

Known Problems

- MS/Windows Users note that due to some bugs in the CYGWIN runtime library the compiler generated temporary files are NOT cleared from the /tmp directory, these have to be manually deleted.
- first storage class specified overrides in declarations . e.g.,

short xdata x, idata y.

will declare both x & y in xdata space. The work around for this is to declare variables with different storage classes separately e.g..

xdata short x;
idata short y;

Enhancements & Bugs Fixes.

Click here to see the enhancements and bug fixes done till date.

What IDE to use ?

I recommend using XEmacs, it is free and is also a really GREAT editor. Linux / Unix users can download binaries for their specific platforms from ftp://ftp.xemacs.org . Windows 95/98/NT Users , can download binaries from http://www.attcanada.net/~markk/xemacs/

The symbolic debugger companion SDCDB when complete will interface to XEmacs using the GUD interface, so we will have a complete development system with IDE .

Reporting Bugs.

Click on this sandeep.dutta@usa.net to send me an email, also send an email to the mailing list for the benefit of other users .Bugs will be fixed according to their severity. I will update the Known Problems section. The compiler alone without the assembler , linker, Preprocessor & garbage collector is about 40,000 lines of blank skipped code, as with any project of this size there are bound to be bugs, I will try me level best to fix them as quickly as I can . If you can trace the bug and fix it, please do so, do send me a copy of the fixed source code so I can update my copy.

Things we are working on .

- More optimizations.
- Retargeting to for ATMEL AVR (8 bit RISC MCUs).

Notes for Users of Version 1.xx

For the benefit of users of the previous Version, I have kept the parser almost identical, I have added a few features, but the programs developed using the first version should compile without change with the new version. The command line options however have changed, the compiler will generate a warning when it encounters an older option and prompt you with the new option.
Version 2.xx is a almost a complete rewrite, it is much more stable and ANSI Compliant than the previous version.

Links

Here are some links I found useful.

- Daniel Drotos has a Freeware simulator for MCS51. This simulator is distributed with the compiler . I found this simulator very very useful (MUST HAVE).
- Joachim Elen has a 8051 Micro controller board with Packet Radio interface .
- Goofee is a very interesting visual programming environment. The software used to be free now you have to buy his book, but worth taking a look.
- www.8052.com is a great site for 8051 programmers.
- Dimitry Obukhov has some useful routines in C, for I2C and other stuff. His malloc & serial I/O routines are included with the compiler.
- John Hartman sells NoICE, an emulator. He also created ASXXXX & ASLINK for 8051. SDCC will eventually support NoICE.
- Tayfun sells a Single Board Computer based on Phillips 80C552.

Acknowledgments.

- Alan Baldwin (baldwin@shop-pdp.kent.edu) - Initial version of ASXXXX and ASLINK.
- John Hartman (jhartman@compuserve.com) - Porting ASXXX and ASLINK for 8051.
- Dmitry S. Obukhov (dso@usa.net) - malloc and serial I/O routines.
- Jans J Boehm(boehm@sgi.com) and Alan J Demers - Conservative garbage collector for C & C++.
- Jean Loius-VERN (jlvern@writeme.com> - substantial improvement in the back-end code generation.
- Daniel Drotos <drdani@mazsola.iit.uni-miskolc.hu> - Free ware simulator for 8051.
- Malini Dutta(malini@mediaone.net) - my wife for her patience and support.
- Unknown - for the GNU C - preprocessor.

This page has been accessed times since March 6th 1999