* src/z80/ralloc.c (packRegsForHLUse3): Changed to not pack into HL if anything...
[fw/sdcc] / doc / sdccman.html / node3.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2
3 <!--Converted with LaTeX2HTML 99.1 release (March 30, 1999)
4 original version by:  Nikos Drakos, CBLU, University of Leeds
5 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 * with significant contributions from:
7   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 <HTML>
9 <HEAD>
10 <TITLE>1.1 About SDCC</TITLE>
11 <META NAME="description" CONTENT="1.1 About SDCC">
12 <META NAME="keywords" CONTENT="sdccman">
13 <META NAME="resource-type" CONTENT="document">
14 <META NAME="distribution" CONTENT="global">
15
16 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17 <META NAME="Generator" CONTENT="LaTeX2HTML v99.1 release">
18 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19
20 <LINK REL="STYLESHEET" HREF="sdccman.css">
21
22 <LINK REL="next" HREF="node4.html">
23 <LINK REL="previous" HREF="node2.html">
24 <LINK REL="up" HREF="node2.html">
25 <LINK REL="next" HREF="node4.html">
26 </HEAD>
27
28 <BODY >
29 <!--Navigation Panel-->
30 <A NAME="tex2html236"
31  HREF="node4.html">
32 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_motif.gif"></A> 
33 <A NAME="tex2html230"
34  HREF="node2.html">
35 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_motif.gif"></A> 
36 <A NAME="tex2html224"
37  HREF="node2.html">
38 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="previous_motif.gif"></A> 
39 <A NAME="tex2html232"
40  HREF="node1.html">
41 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents_motif.gif"></A> 
42 <A NAME="tex2html234"
43  HREF="node61.html">
44 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index_motif.gif"></A> 
45 <BR>
46 <B> Next:</B> <A NAME="tex2html237"
47  HREF="node4.html">1.2 Open Source</A>
48 <B> Up:</B> <A NAME="tex2html231"
49  HREF="node2.html">1. Introduction</A>
50 <B> Previous:</B> <A NAME="tex2html225"
51  HREF="node2.html">1. Introduction</A>
52  &nbsp <B>  <A NAME="tex2html233"
53  HREF="node1.html">Contents</A></B> 
54  &nbsp <B>  <A NAME="tex2html235"
55  HREF="node61.html">Index</A></B> 
56 <BR>
57 <BR>
58 <!--End of Navigation Panel-->
59
60 <H2><A NAME="SECTION00021000000000000000">
61 1.1 About SDCC</A>
62 </H2>
63
64 <P>
65  
66 <B>SDCC</B> is a Freeware, retargettable, optimizing ANSI-C compiler
67 by <B>Sandeep Dutta</B> designed for 8 bit Microprocessors. The
68 current version targets Intel MCS51 based Microprocessors(8051,8052,
69 etc), Zilog Z80 based MCUs, and the Dallas DS80C390 variant. It can
70 be retargetted for other microprocessors, support for PIC, AVR and
71 186 is under development. The entire source code for the compiler
72 is distributed under GPL. SDCC uses ASXXXX &amp; ASLINK, a Freeware,
73 retargettable assembler &amp; linker. SDCC has extensive language extensions
74 suitable for utilizing various microcontrollers and underlying hardware
75 effectively. 
76 <BR>
77
78 <BR>
79 In addition to the MCU specific optimizations SDCC also does a host
80 of standard optimizations like:
81
82 <P>
83
84 <UL>
85 <LI>global sub expression elimination, </LI>
86 <LI>loop optimizations (loop invariant, strength reduction of induction
87 variables and loop reversing), </LI>
88 <LI>constant folding &amp; propagation, </LI>
89 <LI>copy propagation, </LI>
90 <LI>dead code elimination </LI>
91 <LI>jumptables for <I>switch</I> statements.</LI>
92 </UL>
93 For the back-end SDCC uses a global register allocation scheme which
94 should be well suited for other 8 bit MCUs. 
95 <BR>
96
97 <BR>
98 The peep hole optimizer uses a rule based substitution mechanism which
99 is MCU independent. 
100 <BR>
101
102 <BR>
103 Supported data-types are:
104
105 <P>
106
107 <UL>
108 <LI>char (8 bits, 1 byte), </LI>
109 <LI>short and int (16 bits, 2 bytes), </LI>
110 <LI>long (32 bit, 4 bytes)</LI>
111 <LI>float (4 byte IEEE). </LI>
112 </UL>
113 The compiler also allows <I>inline assembler code</I> to be embedded
114 anywhere in a function. In addition, routines developed in assembly
115 can also be called.
116 <BR>
117
118 <BR>
119 SDCC also provides an option (-cyclomatic) to report the relative
120 complexity of a function. These functions can then be further optimized,
121 or hand coded in assembly if needed. 
122 <BR>
123
124 <BR>
125 SDCC also comes with a companion source level debugger SDCDB, the
126 debugger currently uses ucSim a freeware simulator for 8051 and other
127 micro-controllers. 
128 <BR>
129
130 <BR>
131 The latest version can be downloaded from  http://sdcc.sourceforge.net/<B>.</B>
132
133 <P>
134 <HR>
135 <!--Navigation Panel-->
136 <A NAME="tex2html236"
137  HREF="node4.html">
138 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_motif.gif"></A> 
139 <A NAME="tex2html230"
140  HREF="node2.html">
141 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_motif.gif"></A> 
142 <A NAME="tex2html224"
143  HREF="node2.html">
144 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="previous_motif.gif"></A> 
145 <A NAME="tex2html232"
146  HREF="node1.html">
147 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents_motif.gif"></A> 
148 <A NAME="tex2html234"
149  HREF="node61.html">
150 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index_motif.gif"></A> 
151 <BR>
152 <B> Next:</B> <A NAME="tex2html237"
153  HREF="node4.html">1.2 Open Source</A>
154 <B> Up:</B> <A NAME="tex2html231"
155  HREF="node2.html">1. Introduction</A>
156 <B> Previous:</B> <A NAME="tex2html225"
157  HREF="node2.html">1. Introduction</A>
158  &nbsp <B>  <A NAME="tex2html233"
159  HREF="node1.html">Contents</A></B> 
160  &nbsp <B>  <A NAME="tex2html235"
161  HREF="node61.html">Index</A></B> 
162 <!--End of Navigation Panel-->
163 <ADDRESS>
164 <I>Johan Knol</I>
165 <BR><I>2001-07-13</I>
166 </ADDRESS>
167 </BODY>
168 </HTML>