From: frief Date: Wed, 27 Apr 2005 17:19:48 +0000 (+0000) Subject: updated weblinks, index and smaller updates X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=def8374b6dc50fcf8022b8a0b23fdb5fd34611a2;p=fw%2Fsdcc updated weblinks, index and smaller updates git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3746 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/doc/sdccman.lyx b/doc/sdccman.lyx index 679cb0a1..c0ed6046 100644 --- a/doc/sdccman.lyx +++ b/doc/sdccman.lyx @@ -2,14 +2,12 @@ \lyxformat 221 \textclass book \begin_preamble - - \usepackage[ pdftitle={SDCC Compiler User Guide}, pdfauthor={SDCC development team}, pdfsubject={installation, user manual}, - pdfkeywords={8032, 8051, ansi, c, compiler, CPU, DS390, - embedded, GPL, HC08, manual, mcs51, PIC, Z80}, + pdfkeywords={8032 8051 ansi c compiler CPU DS390 + embedded GPL HC08 manual mcs51 microcontroller PIC Z80}, colorlinks=true, linkcolor=blue] {hyperref} % @@ -350,6 +348,11 @@ italic. \layout Section Compatibility with previous versions +\begin_inset LatexCommand \index{Compatibility with previous versions} + +\end_inset + + \layout Standard This version has numerous bug fixes compared with the previous version. @@ -438,10 +441,40 @@ status Collapsed -stack-after-data has been removed. \layout Itemize -bit and sbit types now consistently behave like the C99 _Bool type with - respect to type conversion. +bit +\begin_inset LatexCommand \index{bit} + +\end_inset + + and sbit +\begin_inset LatexCommand \index{sbit} + +\end_inset + + +\begin_inset LatexCommand \index{\_\_sbit} + +\end_inset + + types now consistently behave like the C99 _Bool type with respect to type + conversion +\begin_inset LatexCommand \index{type conversion} + +\end_inset + + +\begin_inset LatexCommand \index{type promotion} + +\end_inset + +. The most common incompatibility resulting from this change is related to - bit toggling idioms, e.g.: + bit toggling +\begin_inset LatexCommand \index{Bit toggling} + +\end_inset + + idioms, e.g.: \newline \family typewriter @@ -3456,16 +3489,11 @@ del /s *.obj *.lib *.rul from the sdcc directory. \layout Subsection -Windows Install Using a Binary Package -\begin_inset LatexCommand \label{sub:Windows-Install} - -\end_inset - - +Windows Install Using a ZIP Package \layout Enumerate -Download the binary package from -\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/snap.php} +Download the binary zip package from +\begin_inset LatexCommand \url{http://sdcc.sf.net/snap.php} \end_inset @@ -3489,6 +3517,38 @@ lib for the include and libraries. Adjust your environment variable PATH to include the location of the bin directory or start sdcc using the full path. +\layout Subsection + +Windows Install Using the Setup Program +\begin_inset LatexCommand \label{sub:Windows-Install} + +\end_inset + + +\layout Standard + +Download the setup program +\emph on +sdcc-x.y.z-setup.exe +\emph default + for an official release from +\newline + +\begin_inset LatexCommand \url{http://sf.net/project/showfiles.php?group_id=599} + +\end_inset + + or a setup program for one of the snapshots +\emph on +sdcc_yyyymmdd_setup.exe +\emph default + from +\begin_inset LatexCommand \url{http://sdcc.sf.net/snap.php} + +\end_inset + + and execute it. + A windows typical installer will guide you through the installation process. \layout Section Building the Documentation @@ -3513,13 +3573,13 @@ make You're invited to make changes and additions to this manual (sdcc/doc/sdccman.ly x). Using LyX -\begin_inset LatexCommand \url{www.lyx.org} +\begin_inset LatexCommand \url{http://www.lyx.org} \end_inset as editor this is straightforward. Prebuilt documentation in html and pdf format is available from -\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/snap.php} +\begin_inset LatexCommand \url{http://sdcc.sf.net/snap.php} \end_inset @@ -3541,8 +3601,28 @@ If you should know why please drop us a note \end_inset . - You'll find the pdf version at -\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/doc/sdccman.pdf} + +\newline +You'll find the pdf version +\begin_inset LatexCommand \index{PDF version of this document} + +\end_inset + + at +\begin_inset LatexCommand \url{http://sdcc.sf.net/doc/sdccman.pdf} + +\end_inset + +. + +\newline +A html version +\begin_inset LatexCommand \index{HTML version of this document} + +\end_inset + + should be online at +\begin_inset LatexCommand \url{http://sdcc.sf.net/doc/sdccman.html/index.html} \end_inset @@ -3568,7 +3648,7 @@ There are many references pointing away from this documentation. Don't let this distract you. If there f.e. was a reference like -\begin_inset LatexCommand \url{www.opencores.org} +\begin_inset LatexCommand \url{http://www.opencores.org} \end_inset @@ -4113,12 +4193,7 @@ S51 \end_inset - is a freeware, opensource simulator developed by Daniel Drotos ( -\begin_inset LatexCommand \url{mailto:drdani@mazsola.iit.uni-miskolc.hu} - -\end_inset - -). + is a freeware, opensource simulator developed by Daniel Drotos. The simulator is built as part of the build process. For more information visit Daniel's web site at: \begin_inset LatexCommand \url{http://mazsola.iit.uni-miskolc.hu/~drdani/embedded/s51} @@ -4315,13 +4390,13 @@ objdump \family default \shape default -\begin_inset LatexCommand \index{srecord (tool)} +\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)} \end_inset ). Both formats are documented in the documentation of srecord -\begin_inset LatexCommand \index{srecord (tool)} +\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)} \end_inset @@ -4368,7 +4443,7 @@ status Collapsed \end_inset -debug) containing debug information. - The format is documented in cdbfileformat.pdf. + The format is documented in cdbfileformat.pdf \layout Itemize sourcefile. @@ -5079,13 +5154,13 @@ Processor Selection Options \end_inset processor (In development, not complete). - AVR users should probably have a look at avr-gcc -\begin_inset LatexCommand \url{ http://savannah.nongnu.org/download/avr-libc/snapshots/} + AVR users should probably have a look at winavr +\begin_inset LatexCommand \url{http://sourceforge.net/projects/winavr} \end_inset - or winavr -\begin_inset LatexCommand \url{http://winavr.sourceforge.net} + or +\begin_inset LatexCommand \url{http://www.avrfreaks.net/index.php?name=PNphpBB2&file=index} \end_inset @@ -5634,8 +5709,7 @@ status Collapsed \end_inset option (which is now a default setting) will override this setting, so - you should also specify the . - + you should also specify the \series bold - \begin_inset ERT @@ -5836,7 +5910,7 @@ The linker output (final object code) is in Intel Hex format. This is the default option. The format itself is documented in the documentation of srecord -\begin_inset LatexCommand \index{srecord (tool)} +\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)} \end_inset @@ -6514,7 +6588,20 @@ status Collapsed \series default Will not do global subexpression elimination, this option may be used when the compiler creates undesirably large stack/data spaces to store compiler - temporaries. + temporaries ( +\emph on +s +\emph default +pill +\emph on +loc +\emph default +ations, sloc +\begin_inset LatexCommand \index{sloc (spill location)} + +\end_inset + +). A warning message will be generated when this happens and the compiler will indicate the number of extra bytes it allocated. It is recommended that this option NOT be used, #pragma\SpecialChar ~ @@ -6723,7 +6810,12 @@ status Collapsed \series default Will not memcpy initialized data from code space into xdata space. - This saves a few bytes in code space if you don't have initialized data. + This saves a few bytes in code space if you don't have initialized data +\begin_inset LatexCommand \index{Variable initialization} + +\end_inset + +. \layout List \labelwidthstring 00.00.0000 @@ -7485,7 +7577,7 @@ status Collapsed (jwk burps: please be more specific here, please!). If you want rather more than less warnings you should consider using a separate tool dedicated to syntax checking like splint -\begin_inset LatexCommand \url{www.splint.org} +\begin_inset LatexCommand \url{http://www.splint.org} \end_inset @@ -7728,7 +7820,7 @@ Intermediate Dump Options The following options are provided for the purpose of retargetting and debugging the compiler. - These provided a means to dump the intermediate code (iCode + They provide a means to dump the intermediate code (iCode \begin_inset LatexCommand \index{iCode} \end_inset @@ -8294,6 +8386,11 @@ In addition to the ANSI storage classes SDCC allows the following MCS51 data \begin_inset LatexCommand \index{data (mcs51, ds390 storage class)} +\end_inset + + +\begin_inset LatexCommand \index{\_\_data (mcs51, ds390 storage class)} + \end_inset / near @@ -8302,6 +8399,11 @@ data \end_inset +\begin_inset LatexCommand \index{\_\_near (storage class)} + +\end_inset + + \layout Standard This is the @@ -8342,6 +8444,11 @@ _test_data,#0x01 xdata \begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)} +\end_inset + + +\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)} + \end_inset / far @@ -8350,6 +8457,11 @@ xdata \end_inset +\begin_inset LatexCommand \index{\_\_far (storage class)} + +\end_inset + + \layout Standard Variables declared with this storage class will be placed in the external @@ -8408,6 +8520,11 @@ idata \end_inset +\begin_inset LatexCommand \index{\_\_idata (mcs51, ds390 storage class)} + +\end_inset + + \layout Standard Variables declared with this storage class will be allocated into the indirectly @@ -8466,6 +8583,11 @@ pdata \end_inset +\begin_inset LatexCommand \index{\_\_pdata (mcs51, ds390 storage class)} + +\end_inset + + \layout Standard Paged xdata access is just as straightforward as using the other addressing @@ -8579,6 +8701,11 @@ code \end_inset +\begin_inset LatexCommand \index{\_\_code} + +\end_inset + + \layout Standard 'Variables' declared with this storage class will be placed in the code @@ -8678,6 +8805,11 @@ bit \end_inset +\begin_inset LatexCommand \index{\_\_bit} + +\end_inset + + \layout Standard This is a data-type and a storage class specifier. @@ -8734,10 +8866,15 @@ Not really meant as examples, but nevertheless showing what bitfields are sfr \begin_inset LatexCommand \index{sfr} +\end_inset + + +\begin_inset LatexCommand \index{\_\_sfr} + \end_inset / sbit -\begin_inset LatexCommand \index{sbit} +\begin_inset LatexCommand \index{\_\_sbit} \end_inset @@ -8777,6 +8914,11 @@ bit sfr at \begin_inset LatexCommand \index{at} +\end_inset + + +\begin_inset LatexCommand \index{\_\_at} + \end_inset 0x80 P0;\SpecialChar ~ @@ -8937,6 +9079,11 @@ idata \end_inset + +\begin_inset LatexCommand \index{\_\_idata (mcs51, ds390 storage class)} + +\end_inset + ). Furthermore, some chips may have some built in external memory ( \emph on @@ -8947,6 +9094,11 @@ xdata \end_inset + +\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)} + +\end_inset + ) which should not be confused with the internal, directly addressable RAM memory ( \emph on @@ -8957,6 +9109,11 @@ data \end_inset + +\begin_inset LatexCommand \index{\_\_data (mcs51, ds390 storage class)} + +\end_inset + ). Sometimes this built in \emph on @@ -8979,9 +9136,32 @@ Normally SDCC will only use the first bank \end_inset of registers (register bank 0), but it is possible to specify that other - banks of registers should be used in interrupt + banks of registers (keyword +\emph on +using +\emph default + +\emph on + +\begin_inset LatexCommand \index{using (mcs51, ds390 register bank)} + +\end_inset + + +\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)} + +\end_inset + + +\emph default +) should be used in interrupt \begin_inset LatexCommand \index{interrupt} +\end_inset + + +\begin_inset LatexCommand \index{\_\_interrupt} + \end_inset routines. @@ -9021,7 +9201,7 @@ status Collapsed \end_inset -data-loc -\begin_inset LatexCommand \index{-\/-data-loc} +\begin_inset LatexCommand \index{-\/-data-loc } \end_inset @@ -9039,7 +9219,12 @@ status Collapsed / \end_inset --iram-size to specify the size of the total internal RAM ( +-iram-size +\begin_inset LatexCommand \index{-\/-iram-size } + +\end_inset + + to specify the size of the total internal RAM ( \emph on data \emph default @@ -9064,7 +9249,7 @@ status Collapsed \end_inset -stack-loc -\begin_inset LatexCommand \index{-\/-stack-loc} +\begin_inset LatexCommand \index{-\/-stack-loc } \end_inset @@ -9106,7 +9291,7 @@ status Collapsed \end_inset -xram-size -\begin_inset LatexCommand \index{-\/-data-loc} +\begin_inset LatexCommand \index{-\/-xram-size } \end_inset @@ -9122,7 +9307,7 @@ status Collapsed \end_inset -code-loc -\begin_inset LatexCommand \index{-\/-data-loc} +\begin_inset LatexCommand \index{-\/-code-loc } \end_inset @@ -9137,7 +9322,7 @@ status Collapsed \end_inset -code-size -\begin_inset LatexCommand \index{-\/-data-loc} +\begin_inset LatexCommand \index{-\/-code-size } \end_inset @@ -9178,6 +9363,11 @@ Z80/Z180 Storage Class sfr \begin_inset LatexCommand \index{sfr} +\end_inset + + +\begin_inset LatexCommand \index{\_\_sfr} + \end_inset (in/out to 8-bit addresses) @@ -9238,6 +9428,11 @@ out (_IoPort),a banked sfr \begin_inset LatexCommand \index{sfr} +\end_inset + + +\begin_inset LatexCommand \index{\_\_sfr} + \end_inset (in/out to 16-bit addresses) @@ -9255,6 +9450,11 @@ banked sfr banked at \begin_inset LatexCommand \index{at} +\end_inset + + +\begin_inset LatexCommand \index{\_\_at} + \end_inset 0x123 IoPort; @@ -9290,6 +9490,11 @@ out (c),a sfr \begin_inset LatexCommand \index{sfr} +\end_inset + + +\begin_inset LatexCommand \index{\_\_sfr} + \end_inset (in0/out0 to 8 bit addresses on Z180 @@ -9347,6 +9552,11 @@ data \end_inset + +\begin_inset LatexCommand \index{\_\_data (hc08 storage class)} + +\end_inset + \layout Standard @@ -9361,6 +9571,11 @@ xdata \end_inset + +\begin_inset LatexCommand \index{\_\_xdata (hc08 storage class)} + +\end_inset + \layout Standard @@ -9383,6 +9598,11 @@ Data items can be assigned an absolute address with the at \begin_inset LatexCommand \index{at} +\end_inset + + +\begin_inset LatexCommand \index{\_\_at} + \end_inset
@@ -9395,11 +9615,21 @@ at xdata \begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)} +\end_inset + + +\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)} + \end_inset at \begin_inset LatexCommand \index{at} +\end_inset + + +\begin_inset LatexCommand \index{\_\_at} + \end_inset 0x7ffe unsigned int chksum; @@ -9525,7 +9755,12 @@ le space. \family typewriter -extern volatile bit MOSI;\SpecialChar ~ +extern volatile +\begin_inset LatexCommand \index{volatile} + +\end_inset + + bit MOSI;\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ @@ -9673,7 +9908,17 @@ Then, someplace in the code for the first hardware you would use \family typewriter -bit at 0x80 MOSI;\SpecialChar ~ +bit at +\begin_inset LatexCommand \index{at} + +\end_inset + + +\begin_inset LatexCommand \index{\_\_at} + +\end_inset + + 0x80 MOSI;\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ @@ -10173,6 +10418,11 @@ interrupt \end_inset +\begin_inset LatexCommand \index{\_\_interrupt} + +\end_inset + + \emph default keyword is the interrupt number this routine will service. When present, the compiler will insert a call to this routine in the interrupt @@ -10184,9 +10434,19 @@ interrupt main \emph default . - The + The optional \emph on using +\begin_inset LatexCommand \index{using (mcs51, ds390 register bank)} + +\end_inset + + +\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)} + +\end_inset + + \emph default keyword can be used to tell the compiler to use the specified register bank (8051 specific) when generating code for this function. @@ -10629,6 +10889,11 @@ using \end_inset +\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)} + +\end_inset + + \emph default a register bank or with register bank 0 ( \emph on @@ -10739,6 +11004,11 @@ int foo () critical \end_inset + +\begin_inset LatexCommand \index{\_\_critical} + +\end_inset + \newline { @@ -11081,7 +11351,12 @@ SDCC generates this instruction if the source follows this pattern: \family typewriter -volatile bit resource_is_free; +volatile +\begin_inset LatexCommand \index{volatile} + +\end_inset + + bit resource_is_free; \newline \newline @@ -11146,6 +11421,11 @@ using \end_inset +\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)} + +\end_inset + + \emph default attribute (which tells the compiler to use a register bank \begin_inset LatexCommand \index{register bank (mcs51, ds390)} @@ -11204,6 +11484,11 @@ interrupt function using a non-zero bank will assume that it can trash that register bank, and will not save it. Since high-priority interrupts +\begin_inset LatexCommand \index{interrupts} + +\end_inset + + \begin_inset LatexCommand \index{interrupt priority} \end_inset @@ -11285,10 +11570,19 @@ _sdcc_external_startup() \emph default routine to your program to override the default if you need to setup hardware or perform some other critical operation prior to static & global variable - initialization. - On some mcs51 variants xdata has to be explicitly enabled before it can - be accessed or if the watchdog needs to be disabled, this is the place - to do it. + initialization +\begin_inset LatexCommand \index{Variable initialization} + +\end_inset + +. + On some mcs51 variants xdata +\begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)} + +\end_inset + + memory has to be explicitly enabled before it can be accessed or if the + watchdog needs to be disabled, this is the place to do it. The startup code clears all internal data memory, 256 bytes by default, but from 0 to n-1 if \emph on @@ -11303,7 +11597,7 @@ status Collapsed \end_inset -iram-size -\begin_inset LatexCommand \index{-\/-iram-size} +\begin_inset LatexCommand \index{-\/-iram-size } \end_inset @@ -11414,11 +11708,21 @@ Starting from a small snippet of c-code this example shows for the MCS51 unsigned char far \begin_inset LatexCommand \index{far (storage class)} +\end_inset + + +\begin_inset LatexCommand \index{\_\_far (storage class)} + \end_inset at \begin_inset LatexCommand \index{at} +\end_inset + + +\begin_inset LatexCommand \index{\_\_at} + \end_inset 0x7f00 buf[0x100]; @@ -11510,6 +11814,11 @@ _asm \end_inset +\begin_inset LatexCommand \index{\_\_asm} + +\end_inset + + \newline \SpecialChar ~ \SpecialChar ~ @@ -11632,7 +11941,17 @@ ret \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ -_endasm; +_endasm +\begin_inset LatexCommand \index{\_endasm} + +\end_inset + + +\begin_inset LatexCommand \index{\_\_endasm} + +\end_inset + +; \newline } \layout Standard @@ -11706,6 +12025,11 @@ _asm \end_inset +\begin_inset LatexCommand \index{\_\_asm} + +\end_inset + + \newline \SpecialChar ~ \SpecialChar ~ @@ -11888,7 +12212,17 @@ t_b_end$: \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ -_endasm; +_endasm +\begin_inset LatexCommand \index{\_endasm} + +\end_inset + + +\begin_inset LatexCommand \index{\_\_endasm} + +\end_inset + +; \newline } \newline @@ -11904,6 +12238,16 @@ collapsed false The assembler does not like some characters like ':' or ''' in comments. You'll find an 100+ pages assembler manual in sdcc/as/doc/asxhtm.html +\begin_inset LatexCommand \index{asXXXX (as-gbz80, as-hc08, asx8051, as-z80)} + +\end_inset + + +\begin_inset LatexCommand \index{Assembler documentation} + +\end_inset + + \end_inset . @@ -11912,10 +12256,29 @@ The assembler does not like some characters like ':' or ''' in comments. _asm \begin_inset LatexCommand \index{\_asm} +\end_inset + + +\begin_inset LatexCommand \index{\_\_asm} + \end_inset ... - _endasm; + _endasm +\size footnotesize + +\begin_inset LatexCommand \index{\_endasm} + +\end_inset + + +\begin_inset LatexCommand \index{\_\_endasm} + +\end_inset + + +\size default +; \family default keyword pair. Specifically it will not know which registers are used and thus register @@ -11985,6 +12348,11 @@ _naked \end_inset + +\begin_inset LatexCommand \index{\_\_naked} + +\end_inset + . \emph default @@ -12031,6 +12399,11 @@ volatile void simpleInterrupt(void) interrupt \begin_inset LatexCommand \index{interrupt} +\end_inset + + +\begin_inset LatexCommand \index{\_\_interrupt} + \end_inset 1 @@ -12061,6 +12434,11 @@ _asm \end_inset +\begin_inset LatexCommand \index{\_\_asm} + +\end_inset + + \newline \SpecialChar ~ \SpecialChar ~ @@ -12096,6 +12474,11 @@ _endasm \end_inset + +\begin_inset LatexCommand \index{\_\_endasm} + +\end_inset + ; \newline } @@ -12332,6 +12715,11 @@ _asm \end_inset + +\begin_inset LatexCommand \index{\_\_asm} + +\end_inset + \newline \SpecialChar ~ @@ -12360,6 +12748,11 @@ b,00001$ _endasm \begin_inset LatexCommand \index{\_endasm} +\end_inset + + +\begin_inset LatexCommand \index{\_\_endasm} + \end_inset ; @@ -12438,7 +12831,17 @@ $0003: ;label (can be referenced by inline assembler only) \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ -_endasm ; +_endasm +\begin_inset LatexCommand \index{\_endasm} + +\end_inset + + +\begin_inset LatexCommand \index{\_\_endasm} + +\end_inset + + ; \newline \SpecialChar ~ \SpecialChar ~ @@ -13878,11 +14281,19 @@ convert long to floating point number \layout Standard These support routines are developed in ANSI-C so there is room for space - and speed improvement. + and speed improvement +\begin_inset Foot +collapsed false + +\layout Standard + +The floating point routines for the mcs51 are implemented in assembler +\end_inset + +. Note if all these routines are used simultaneously the data space might overflow. - For serious floating point usage it is recommended that the large model - be used. + For serious floating point usage the large model might be needed. Also notice that you don't have to call this routines directly. The compiler will use them automatically every time a floating point operation is required. @@ -14002,6 +14413,11 @@ status Collapsed If you're short on memory you might want to use \family typewriter printf_small() +\begin_inset LatexCommand \index{printf\_small()} + +\end_inset + + \family default \emph on @@ -14012,12 +14428,35 @@ instead printf(). \family default - For the mcs51 there is an assembly version + For the mcs51 there additionally are assembly versions +\family typewriter +printf_tiny() +\begin_inset LatexCommand \index{printf\_tiny() (mcs51)} + +\end_inset + + +\family default + and \family typewriter printf_fast() +\begin_inset LatexCommand \index{printf\_fast() (mcs51)} + +\end_inset + + +\family default +and +\family typewriter + printf_fast_f() +\begin_inset LatexCommand \index{printf\_fast\_f() (mcs51)} + +\end_inset + + \family default - which should fit the requirements of many embedded systems (by unsetting - #defines it can be customized to + which should fit the requirements of many embedded systems (printf_fast() + can be customized by unsetting #defines to \emph on not \emph default @@ -14455,6 +14894,11 @@ none \end_inset + +\begin_inset LatexCommand \index{\_\_naked} + +\end_inset + . \layout Itemize @@ -15389,7 +15833,7 @@ For assembling you can use either GPUTILS' gpasm.exe or MPLAB's mpasmwin.exe. GPUTILS is available from -\begin_inset LatexCommand \url{http://gputils.sourceforge.net/} +\begin_inset LatexCommand \url{http://sourceforge.net/projects/gputils} \end_inset @@ -17036,7 +17480,7 @@ xxxx \layout Standard Libraries are created with gplib which is part of the gputils package -\begin_inset LatexCommand \url{http://gputils.sourceforge.net} +\begin_inset LatexCommand \url{http://sourceforge.net/projects/gputils} \end_inset @@ -20363,7 +20807,12 @@ Use the smallest data type to represent your data-value. use an 'unsigned char' instead of a 'short' or 'int'. Please note, that ANSI C requires both signed and unsigned chars to be promoted to 'signed int' before doing any operation. - This promotion can be omitted, if the result is the same. + This promotion +\begin_inset LatexCommand \index{type promotion} + +\end_inset + + can be omitted, if the result is the same. The effect of the promotion rules together with the sign-extension is often surprising: \begin_deeper @@ -21328,7 +21777,7 @@ GNU PIC utilities \layout Standard -\begin_inset LatexCommand \url{http://gputils.sourceforge.net/} +\begin_inset LatexCommand \url{http://sourceforge.net/projects/gputils} \end_inset @@ -21359,7 +21808,7 @@ PIC programmer \layout Standard -\begin_inset LatexCommand \url{http://digilander.libero.it/fbradasc/FLP5.html} +\begin_inset LatexCommand \url{http://freshmeat.net/projects/flp5/} \end_inset @@ -21395,7 +21844,7 @@ Formats C source - Master of the white spaces \layout Standard -\begin_inset LatexCommand \url{http://home.hccnet.nl/d.ingamells/beautify.html} +\begin_inset LatexCommand \url{http://directory.fsf.org/GNU/indent.html} \end_inset @@ -21410,7 +21859,7 @@ Formats C source - Master of the white spaces \layout Standard srecord -\begin_inset LatexCommand \index{srecord (tool)} +\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)} \end_inset @@ -21431,7 +21880,7 @@ Object file conversion, checksumming, ... \layout Standard -\begin_inset LatexCommand \url{http://srecord.sourceforge.net/} +\begin_inset LatexCommand \url{http://sourceforge.net/projects/srecord} \end_inset @@ -21696,7 +22145,7 @@ C Reference Card \layout Standard -\begin_inset LatexCommand \url{http://www.refcards.com/about/c.html} +\begin_inset LatexCommand \url{http://refcards.com/refcards/c/index.html} \end_inset @@ -22159,7 +22608,7 @@ You can follow the status of the cvs version \size footnotesize -\begin_inset LatexCommand \htmlurl{http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/sdcc/sdcc/ChangeLog?rev=HEAD&content-type=text/plain} +\begin_inset LatexCommand \htmlurl{http://cvs.sf.net/cgi-bin/viewcvs.cgi/*checkout*/sdcc/sdcc/ChangeLog?rev=HEAD&content-type=text/plain} \end_inset @@ -22210,7 +22659,7 @@ sdcc/device/examples/. More examples and libraries are available at \emph on The SDCC Open Knowledge Resource -\begin_inset LatexCommand \url{http://www.qsl.net/dl9sec/SDCC_OKR.html} +\begin_inset LatexCommand \url{http://sdccokr.dl9sec.de/} \end_inset @@ -23426,8 +23875,13 @@ bound \emph default aries. It has no effect if a default label is supplied. - Use of this pragma is dangerous: if the switch argument is not matched - by a case statement the processor will happily jump into Nirvana. + Use of this pragma is dangerous: if the switch +\begin_inset LatexCommand \index{switch statement} + +\end_inset + + argument is not matched by a case statement the processor will happily + jump into Nirvana. \layout Subsection Bit-shifting Operations @@ -23928,7 +24382,9 @@ The compiler uses a rule based, pattern matching and re-writing mechanism copt \emph default a peep-hole optimizer by Christopher W. - Fraser (cwfraser@microsoft.com). + Fraser (cwfraser\SpecialChar ~ +@\SpecialChar ~ +microsoft.com). A default set of rules are compiled into the compiler, additional rules may be added with the \emph on @@ -24456,44 +24912,6 @@ No support for setjmp (for now). \layout Itemize -Certain words that are valid identifiers in the standard may be reserved - words in SDCC unless the -\series bold -- -\begin_inset ERT -status Collapsed - -\layout Standard - -\backslash -/ -\end_inset - --std-c89 -\begin_inset LatexCommand \index{-\/-std-c89} - -\end_inset - - or - -\begin_inset ERT -status Collapsed - -\layout Standard - -\backslash -/ -\end_inset - --std-c99 -\begin_inset LatexCommand \index{-\/-std-c99} - -\end_inset - - -\series default - command line options are used. -\layout Itemize - Old K&R style \begin_inset LatexCommand \index{K\&R style} @@ -24564,7 +24982,12 @@ t', 'near', 'nonbanked', 'pdata', 'reentrant', 'sbit', 'sfr', 'shadowregs', 'sram', 'using', 'wparam', 'xdata', '_overlay', '_asm', '_endasm', and '_naked'. Compliant equivalents of these keywords are always available in a form - that begin with two underscores, f.e. + that begin with two underscores +\begin_inset LatexCommand \index{\_\_ (prefix for extended keywords)} + +\end_inset + +, f.e. '__data' instead of 'data'. \layout Section @@ -24724,7 +25147,11 @@ The anatomy of the compiler \shape italic This is an excerpt from an article published in Circuit Cellar Magazine - in august 2000. + in +\series bold +August 2000 +\series default +. It's a little outdated (the compiler is much more efficient now and user/develo per friendly), but pretty well exposes the guts of it all. \shape default