X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=doc%2Fsdccman.lyx;h=1be9988329041bd2e8979637028c5ba56b3ba562;hb=737dac29e879ca0925019d8db9cf0e0195798c31;hp=d4618487e64f2df89f8fe33c012d584f7158b49f;hpb=44c5eae423a3c4503cf2bc5287e13265019e2a35;p=fw%2Fsdcc diff --git a/doc/sdccman.lyx b/doc/sdccman.lyx index d4618487..1be99883 100644 --- a/doc/sdccman.lyx +++ b/doc/sdccman.lyx @@ -104,7 +104,7 @@ SDCC Compiler User Guide \begin_layout Date \size normal -SDCC 2.7.1 +SDCC 2.7.3 \size footnotesize \newline @@ -730,7 +730,7 @@ open source freeware \emph default ; source code for all the sub-packages (pre-processor, assemblers, linkers - etc) is distributed with the package. + etc.) is distributed with the package. This documentation is maintained using a free open source word processor (LyX). \newline @@ -836,8 +836,20 @@ It would be fine to add to each item, in which version was it changed. \begin_layout Itemize short is now equivalent to int (16 bits), it used to be equivalent to char (8 bits) which is not ANSI compliant. - To maintain compatibility, old programs may be compiled using the --short-is-8b -its commandline option (see + To maintain compatibility, old programs may be compiled using the - +\begin_inset ERT +status collapsed + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + +-short-is-8bits commandline option (see \begin_inset LatexCommand \vref{lyx:--short-is-8bits} \end_inset @@ -1404,7 +1416,25 @@ status collapsed \end_inset --disable-pic-port Excludes the PIC port +-disable-pic-port Excludes the PIC14 port +\end_layout + +\begin_layout List +\labelwidthstring 00.00.0000 +- +\begin_inset ERT +status collapsed + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + +-disable-pic16-port Excludes the PIC16 port \end_layout \begin_layout List @@ -1534,14 +1564,14 @@ status collapsed \end_inset --help` and the man/info pages of `configure` for details. +-help' and the man/info pages of `configure' for details. \newline \newline The names of the standard libraries STD_LIB, STD_INT_LIB, STD_LONG_LIB, STD_FP_LIB, STD_DS390_LI B, STD_XA51_LIB and the environment variables SDCC_DIR_NAME, SDCC_INCLUDE_NAME, - SDCC_LIB_NAME are defined by `configure` too. + SDCC_LIB_NAME are defined by `configure' too. At the moment it's not possible to change the default settings (it was simply never required). \newline @@ -2811,7 +2841,7 @@ model \begin_layout Standard \noindent -The install paths can still be changed during `make install` with e.g.: +The install paths can still be changed during `make install' with e.g.: \end_layout \begin_layout LyX-Code @@ -4611,8 +4641,8 @@ This is not only usefull for building different binaries, e.g. generated files are not scattered between the source files. And the best thing is: if you want to change a file you can leave the original file untouched in the source directory. - Simply copy it to the build directory, edit it, enter `make clean`, `rm - Makefile.dep` and `make`. + Simply copy it to the build directory, edit it, enter `make clean', `rm + Makefile.dep' and `make'. \series bold make @@ -6249,6 +6279,28 @@ sdcclib libint.lib _moduint.rel \family sans \series bold sdcclib libint.lib _mulint.rel +\family default +\series default + +\newline + +\end_layout + +\begin_layout Standard +Or, if you preffer: +\family sans +\series bold + +\newline + +\end_layout + +\begin_layout Standard + +\family sans +\series bold +sdcclib libint.lib _divsint.rel _divuint.rel _modsint.rel _moduint.rel _mulint.rel +\family default \series default \newline @@ -6257,7 +6309,120 @@ sdcclib libint.lib _mulint.rel \begin_layout Standard If the file already exists in the library, it will be replaced. - To see what modules and symbols are included in the library, options -s + If a list of .rel files is available, you can tell sdcclib to add those + files to a library. + For example, if the file 'myliblist.txt' contains +\family sans +\series bold + +\newline + +\end_layout + +\begin_layout Standard + +\family sans +\series bold +_divsint.rel +\end_layout + +\begin_layout Standard + +\family sans +\series bold +_divuint.rel +\end_layout + +\begin_layout Standard + +\family sans +\series bold +_modsint.rel +\end_layout + +\begin_layout Standard + +\family sans +\series bold +_moduint.rel +\end_layout + +\begin_layout Standard + +\family sans +\series bold +_mulint.rel +\family default +\series default + +\newline + +\end_layout + +\begin_layout Standard +Use +\family sans +\series bold + +\newline + +\end_layout + +\begin_layout Standard + +\family sans +\series bold +sdcclib -l libint.lib myliblist.txt +\family default +\series default + +\newline + +\end_layout + +\begin_layout Standard +Additionally, you can instruct sdcclib to compiles the files before adding + them to the library. + This is achieved using the environment variables SDCCLIB_CC +\begin_inset LatexCommand \index{SDCCLIB_CC} + +\end_inset + + and/or SDCCLIB_AS +\begin_inset LatexCommand \index{SDCCLIB_AS} + +\end_inset + +. + For example: +\family sans +\series bold + +\newline + +\end_layout + +\begin_layout Standard + +\family sans +\series bold +set SDCCLIB_CC=sdcc -c +\end_layout + +\begin_layout Standard + +\family sans +\series bold +sdcclib -l libint.lib myliblist.txt +\family default +\series default + +\newline + +\end_layout + +\begin_layout Standard +To see what modules and symbols are included in the library, options -s and -m are available. For example: \newline @@ -8060,6 +8225,38 @@ status collapsed Causes the linker to use old style for allocating memory areas. \end_layout +\begin_layout List +\labelwidthstring 00.00.0000 + +\series bold +- +\begin_inset ERT +status collapsed + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + +-acall-ajmp +\series default +\InsetSpace ~ + +\begin_inset LatexCommand \index{-\/-acall-ajmp} + +\end_inset + + Replaces the three byte instructions lcall/ljmp with the two byte instructions + acall/ajmp. + Only use this option if your code is in the same 2k block of memory. + You may need to use this option for some 8051 derivatives which lack the + lcall/ljmp instructions.. +\end_layout + \begin_layout Standard \begin_inset VSpace bigskip \end_inset @@ -8265,7 +8462,20 @@ status collapsed \labelwidthstring 00.00.0000 \series bold ---stack-8-bit - switches off the 10-bit mode +- +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + +-stack-8-bit - switches off the 10-bit mode \end_layout \end_inset @@ -8306,7 +8516,7 @@ status collapsed \series bold - \begin_inset ERT -status collapsed +status open \begin_layout Standard @@ -9404,7 +9614,41 @@ reentrant Parameters and Local Variables for more details. If this option is used all source files in the project should be compiled with this option. - It automatically implies --int-long-reent and --float-reent. + It automatically implies - +\series bold + +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + + +\series default +-int-long-reent and - +\series bold + +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + + +\series default +-float-reent. \end_layout @@ -9749,7 +9993,24 @@ status collapsed unsigned \family default . - To set the signess for characters to unsigned, use the option --funsigned-char. + To set the signess for characters to unsigned, use the option - +\series bold + +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + + +\series default +-funsigned-char. If this option is set and no signedness keyword (unsigned/signed) is given, a char will be signed. All other types are unaffected. @@ -9977,8 +10238,24 @@ status collapsed \series default - Don't include peep-hole comments in the generated asm files even if --fverbose- -asm option is specified. + Don't include peep-hole comments in the generated asm files even if - +\series bold + +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + + +\series default +-fverbose-asm option is specified. \end_layout \begin_layout List @@ -10696,7 +10973,7 @@ status collapsed \series default - Will create a dump of iCode's, after global subexpression elimination + Will create a dump of iCodes, after global subexpression elimination \begin_inset LatexCommand \index{Global subexpression elimination} \end_inset @@ -10730,7 +11007,7 @@ status collapsed \series default - Will create a dump of iCode's, after deadcode elimination + Will create a dump of iCodes, after deadcode elimination \begin_inset LatexCommand \index{Dead-code elimination} \end_inset @@ -10767,7 +11044,7 @@ status collapsed \size large \size default -Will create a dump of iCode's, after loop optimizations +Will create a dump of iCodes, after loop optimizations \begin_inset LatexCommand \index{Loop optimization} \end_inset @@ -10804,7 +11081,7 @@ status collapsed \size large \size default -Will create a dump of iCode's, after live range analysis +Will create a dump of iCodes, after live range analysis \begin_inset LatexCommand \index{Live range analysis} \end_inset @@ -10873,7 +11150,7 @@ status collapsed \series default \bar default -Will create a dump of iCode's, after register assignment +Will create a dump of iCodes, after register assignment \begin_inset LatexCommand \index{Register assignment} \end_inset @@ -10954,7 +11231,7 @@ Redirecting output on Windows Shells \end_layout \begin_layout Standard -By default SDCC writes it's error messages to +By default SDCC writes its error messages to \begin_inset Quotes sld \end_inset @@ -15114,7 +15391,24 @@ The compiler triggers the linker to link certain initialization modules called crt. Only the necessary ones are linked, for instance crtxstack.asm (GSINIT1, - GSINIT5) is not linked unless the --xstack option is used. + GSINIT5) is not linked unless the - +\series bold + +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + + +\series default +-xstack option is used. These modules are highly entangled by the use of special segments/areas, but a common layout is shown below: \end_layout @@ -21368,7 +21662,7 @@ less_pedantic \end_inset -- the compiler will not warn you anymore for obvious mistakes, you'r on +- the compiler will not warn you anymore for obvious mistakes, you're on your own now ;-( . See also the command line option - \begin_inset ERT @@ -22133,7 +22427,7 @@ int foo () \begin_layout Standard The compiler will generate a warning message when extra space is allocated. - It is strongly recommended that the save and restore pragma's be used when + It is strongly recommended that the save and restore pragmas be used when changing options for a function. \newline @@ -22837,29 +23131,34 @@ The HC08 port passes the regression test suite (see section \end_layout \begin_layout Section -The PIC14 port -\end_layout +The PIC14 +\begin_inset LatexCommand \index{PIC14} -\begin_layout Standard -The PIC14 port adds support for Microchip(TM)'s 14 -\begin_inset ERT -status open +\end_inset + + port +\end_layout \begin_layout Standard +The PIC14 port adds support for Microchip +\begin_inset LatexCommand \index{Microchip} +\end_inset -\backslash -, -\end_layout +\begin_inset Formula $^{\text{TM}}$ \end_inset -bit PIC + PIC \begin_inset LatexCommand \index{PIC14} \end_inset - MCUs. + +\begin_inset Formula $^{\text{TM}}$ +\end_inset + + MCUs with 14 bit wide instructions. This port is not yet mature and still lacks many features. However, it can work for simple code. \end_layout @@ -22972,7 +23271,7 @@ For devices that have multiple code pages it is more efficient to use the \begin_layout Enumerate And as for any 8 bit micro (especially for PIC14 as they have a very simple - instruction set), use 'unsigned char' wherever possible instead of 'int'. + instruction set), use `unsigned char' wherever possible instead of `int'. \end_layout \begin_layout Subsection @@ -23045,7 +23344,7 @@ Interrupt Code \end_layout \begin_layout Standard -For the interrupt function, use the keyword '__interrupt' +For the interrupt function, use the keyword `__interrupt' \begin_inset LatexCommand \index{PIC14!interrupt} \end_inset @@ -23329,15 +23628,7 @@ device/lib \end_layout \begin_layout Subsubsection -error: missing definition for symbol -\begin_inset Quotes sld -\end_inset - -__gptrget1 -\begin_inset Quotes srd -\end_inset - - +error: missing definition for symbol ``__gptrget1'' \end_layout \begin_layout Standard @@ -23360,15 +23651,7 @@ libsdcc.lib \end_layout \begin_layout Subsubsection -Processor mismatch in file -\begin_inset Quotes sld -\end_inset - -XXX -\begin_inset Quotes srd -\end_inset - -. +Processor mismatch in file ``XXX''. \end_layout \begin_layout Standard @@ -23452,20 +23735,27 @@ The PIC16 \end_layout \begin_layout Standard -The PIC16 -\begin_inset LatexCommand \index{PIC16} +The PIC16 port adds support for Microchip +\begin_inset LatexCommand \index{Microchip} + +\end_inset + + +\begin_inset Formula $^{\text{TM}}$ +\end_inset + + PIC +\begin_inset LatexCommand \index{PIC} \end_inset - port is the portion of SDCC that is responsible to produce code for the - Microchip -\begin_inset LatexCommand \index{Microchip} +\begin_inset Formula $^{\text{TM}}$ \end_inset -(TM) microcontrollers with 16 bit core. - Currently this family of microcontrollers contains the PIC18Fxxx and PIC18Fxxxx. - Currently supported devices are: + MCUs with 16 bit wide instructions. + Currently this family of microcontrollers contains the PIC18Fxxx and PIC18Fxxxx +; devices supported by the port include: \end_layout \begin_layout Standard @@ -23477,11 +23767,13 @@ The PIC16 \end_layout \begin_layout Standard -18F: 2220, 2221, 2320, 2321, 2331, 2431, 2455, 2525, 2550, 2620 +18F: 2220, 2221, 2320, 2321, 2331, 2431, 2455, 24j10, 2525, 2550, 25j10, + 2620 \end_layout \begin_layout Standard -18F: 4220, 4221, 4320, 4321, 4331, 4431, 4455, 4520, 4525, 4550, 4620 +18F: 4220, 4221, 4320, 4321, 4331, 4431, 4455, 44j10, 4520, 4525, 4550, + 45j10, 4620 \end_layout \begin_layout Standard @@ -26093,7 +26385,7 @@ not Address of the specific interrupt. This is not a problem for the LOW priority interrupts, but it is a problem for the RESET and the HIGH priority interrupts because code may be written - at the next interruptĀ“s vector address and cause undeterminate program + at the next interrupt's vector address and cause undeterminate program behaviour if that interrupt is raised. \begin_inset Foot status open @@ -26111,7 +26403,7 @@ disabled \end_layout \begin_layout Enumerate -when the ISR is small enough not to reach the next interruptĀ“s vector address. +when the ISR is small enough not to reach the next interrupt's vector address. \end_layout \end_inset @@ -26124,7 +26416,7 @@ when the ISR is small enough not to reach the next interrupt \emph on n \emph default - is possible to be omitted. + may be omitted. This way a function is generated similar to an ISR, but it is not assigned to any interrupt. \end_layout @@ -32248,7 +32540,24 @@ Subversion Source Code Repository The output of \family sans \series bold -sdcc --version +sdcc - +\family default + +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + + +\family sans +-version \family default \series default or the filenames of the snapshot versions of SDCC include date and its @@ -32305,18 +32614,18 @@ Historically there often were long delays between official releases and \end_inset . - A release wiki + The SDCC Wiki \begin_inset LatexCommand \index{wiki} \end_inset -\begin_inset LatexCommand \index{Release wiki} +\begin_inset LatexCommand \index{SDCC Wiki} \end_inset at -\begin_inset LatexCommand \url{http://sdcc.sf.net/release_wiki/} +\begin_inset LatexCommand \url{http://sdcc.wiki.sourceforge.net/} \end_inset @@ -35476,6 +35785,34 @@ replace { lcall %1 } by { acall %1 } replace { ljmp %1 } by { ajmp %1 } \end_layout +\begin_layout Standard +(NOTE: from version 2.7.3 on, you can use option - +\emph on + +\begin_inset ERT +status collapsed + +\begin_layout Standard + + +\backslash +/ +\end_layout + +\end_inset + + +\emph default +-acall-ajmp +\begin_inset LatexCommand \index{-\/-acall-ajmp} + +\end_inset + +, which also takes care of aligning the interrupt vectors properly.) +\newline + +\end_layout + \begin_layout Standard The \emph on @@ -36230,13 +36567,13 @@ As mentioned in the optimization section the peep-hole optimizer is rule \end_layout \begin_layout Standard -More information is available in a wiki +More information is available on SDCC Wiki \begin_inset LatexCommand \index{wiki} \end_inset (preliminary link -\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/release_wiki/index.php?page=SDCC+internals+and+porting} +\begin_inset LatexCommand \url{http://sdcc.wiki.sourceforge.net/SDCC+internals+and+porting} \end_inset