converted to LyX 1.5.7 (\lyxformat 276) format
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5286
4a8a32a2-be11-0410-ad9d-
d568d2c75423
+2008-12-14 Borut Razem <borut.razem AT siol.net>
+
+ * doc/sdccman.lyx, cdbfileformat.lyx, test_suite_spec.lyx:
+ converted to LyX 1.5.7 (\lyxformat 276) format
+
2008-12-07 Borut Razem <borut.razem AT siol.net>
* support/regression/tests/bitfields.c:
2008-12-07 Borut Razem <borut.razem AT siol.net>
* support/regression/tests/bitfields.c:
-#LyX 1.4.4 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
+#LyX 1.5.7 created this file. For more info see http://www.lyx.org/
+\lyxformat 276
\begin_document
\begin_header
\textclass article
\begin_document
\begin_header
\textclass article
\end_preamble
\language english
\inputencoding auto
\end_preamble
\language english
\inputencoding auto
+\font_roman times
+\font_sans helvet
+\font_typewriter courier
+\font_default_family default
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\papersize default
\use_geometry false
\use_amsmath 1
\graphics default
\paperfontsize default
\spacing single
\papersize default
\use_geometry false
\use_amsmath 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\papersides 1
\paperpagestyle fancy
\tracking_changes false
\papersides 1
\paperpagestyle fancy
\tracking_changes false
+\output_changes false
+\author ""
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-\begin_inset LatexCommand \tableofcontents{}
+\begin_inset LatexCommand tableofcontents
-#LyX 1.4.5 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
+#LyX 1.5.7 created this file. For more info see http://www.lyx.org/
+\lyxformat 276
\begin_document
\begin_header
\textclass book
\begin_document
\begin_header
\textclass book
\end_preamble
\language english
\inputencoding default
\end_preamble
\language english
\inputencoding default
+\font_roman times
+\font_sans helvet
+\font_typewriter courier
+\font_default_family default
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\papersize letterpaper
\use_geometry true
\use_amsmath 1
\graphics default
\paperfontsize default
\spacing single
\papersize letterpaper
\use_geometry true
\use_amsmath 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\papersides 1
\paperpagestyle fancy
\tracking_changes false
\papersides 1
\paperpagestyle fancy
\tracking_changes false
+\output_changes false
+\author ""
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-\begin_inset LatexCommand \tableofcontents{}
+\begin_inset LatexCommand tableofcontents
designed for 8 bit Microprocessors.
The current version targets Intel MCS51 based Microprocessors (8031, 8032,
8051, 8052
designed for 8 bit Microprocessors.
The current version targets Intel MCS51 based Microprocessors (8031, 8032,
8051, 8052
-\begin_inset LatexCommand \index{8031, 8032, 8051, 8052, mcs51 CPU}
+\begin_inset LatexCommand index
+name "8031, 8032, 8051, 8052, mcs51 CPU"
Atmel AVR is under development.
The entire source code for the compiler is distributed under GPL.
SDCC uses ASXXXX
Atmel AVR is under development.
The entire source code for the compiler is distributed under GPL.
SDCC uses ASXXXX
-\begin_inset LatexCommand \index{asXXXX (as-gbz80, as-hc08, asx8051, as-z80)}
+\begin_inset LatexCommand index
+name "asXXXX (as-gbz80, as-hc08, asx8051, as-z80)"
-\begin_inset LatexCommand \index{aslink}
+\begin_inset LatexCommand index
+name "aslink"
\newline
The latest SDCC version can be downloaded from
\newline
The latest SDCC version can be downloaded from
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/snap.php}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/snap.php"
\emph on
Please note: the compiler will probably always be some steps ahead of this
documentation
\series bold
\emph default
\emph on
Please note: the compiler will probably always be some steps ahead of this
documentation
\series bold
\emph default
-\begin_inset LatexCommand \index{Status of documentation}
+\begin_inset LatexCommand index
+name "Status of documentation"
\newline
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License
\newline
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License
-\begin_inset LatexCommand \index{GNU General Public License, GPL}
+\begin_inset LatexCommand index
+name "GNU General Public License, GPL"
your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty
your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty
-\begin_inset LatexCommand \index{warranty}
+\begin_inset LatexCommand index
+name "warranty"
\begin_layout Section
Typographic conventions
\begin_layout Section
Typographic conventions
-\begin_inset LatexCommand \index{Typographic conventions}
+\begin_inset LatexCommand index
+name "Typographic conventions"
\begin_layout Section
Compatibility
\begin_layout Section
Compatibility
-\begin_inset LatexCommand \label{sec:Compatibility-with-previous}
+\begin_inset LatexCommand label
+name "sec:Compatibility-with-previous"
\end_inset
with previous versions
\end_inset
with previous versions
-\begin_inset LatexCommand \index{Compatibility with previous versions}
+\begin_inset LatexCommand index
+name "Compatibility with previous versions"
But we also sometimes introduce some incompatibilities with older versions.
Not just for the fun of it, but to make the compiler more stable, efficient
and ANSI compliant
But we also sometimes introduce some incompatibilities with older versions.
Not just for the fun of it, but to make the compiler more stable, efficient
and ANSI compliant
-\begin_inset LatexCommand \index{ANSI-compliance}
+\begin_inset LatexCommand index
+name "ANSI-compliance"
-\begin_inset LatexCommand \ref{sub:ANSI-Compliance}
+\begin_inset LatexCommand ref
+reference "sub:ANSI-Compliance"
\end_inset
-short-is-8bits commandline option (see
\end_inset
-short-is-8bits commandline option (see
-\begin_inset LatexCommand \vref{lyx:--short-is-8bits}
+\begin_inset LatexCommand vref
+reference "lyx:--short-is-8bits"
\begin_layout Itemize
char type parameters to vararg
\begin_layout Itemize
char type parameters to vararg
-\begin_inset LatexCommand \index{vararg, va\_arg}
+\begin_inset LatexCommand index
+name "vararg, va\\_arg"
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand index
+name "-\\/-std-c89"
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-std-c99}
+\begin_inset LatexCommand index
+name "-\\/-std-c99"
- will push a as an int and as a char resp if
+ will push a as an int and as a char resp if
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand index
+name "-\\/-std-c89"
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-std-c99}
+\begin_inset LatexCommand index
+name "-\\/-std-c99"
\series default
command line options are not defined,
\newline
\series default
command line options are not defined,
\newline
- will push a as two ints if
+ will push a as two ints if
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand index
+name "-\\/-std-c89"
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-std-c99}
+\begin_inset LatexCommand index
+name "-\\/-std-c99"
\begin_layout Itemize
bit
\begin_layout Itemize
bit
-\begin_inset LatexCommand \index{bit}
+\begin_inset LatexCommand index
+name "bit"
-\begin_inset LatexCommand \index{sbit}
+\begin_inset LatexCommand index
+name "sbit"
-\begin_inset LatexCommand \index{\_\_sbit}
+\begin_inset LatexCommand index
+name "\\_\\_sbit"
\end_inset
types now consistently behave like the C99 _Bool type with respect to type
conversion
\end_inset
types now consistently behave like the C99 _Bool type with respect to type
conversion
-\begin_inset LatexCommand \index{type conversion}
+\begin_inset LatexCommand index
+name "type conversion"
-\begin_inset LatexCommand \index{type promotion}
+\begin_inset LatexCommand index
+name "type promotion"
\end_inset
.
The most common incompatibility resulting from this change is related to
bit toggling
\end_inset
.
The most common incompatibility resulting from this change is related to
bit toggling
-\begin_inset LatexCommand \index{Bit toggling}
+\begin_inset LatexCommand index
+name "Bit toggling"
\InsetSpace ~
\InsetSpace ~
b = ~
\InsetSpace ~
\InsetSpace ~
b = ~
-\begin_inset LatexCommand \index{\~\/ Operator}
+\begin_inset LatexCommand index
+name "\\~\\/ Operator"
-\begin_inset LatexCommand \index{-\/-std-c99}
+\begin_inset LatexCommand index
+name "-\\/-std-c99"
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand index
+name "-\\/-std-c89"
\begin_layout Standard
The SDCC home page at
\begin_layout Standard
The SDCC home page at
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/"
This document can be found in the DOC directory of the source package as
a text or HTML file.
A pdf version of this document is available at
This document can be found in the DOC directory of the source package as
a text or HTML file.
A pdf version of this document is available at
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/doc/sdccman.pdf}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/doc/sdccman.pdf"
\family typewriter
better code banking
\family typewriter
better code banking
-\begin_inset LatexCommand \index{code banking (limited support)}
+\begin_inset LatexCommand index
+name "code banking (limited support)"
\family default
If you can think of some more, please see the section
\family default
If you can think of some more, please see the section
-\begin_inset LatexCommand \ref{sub:Requesting-Features}
+\begin_inset LatexCommand ref
+reference "sub:Requesting-Features"
\end_inset
about filing feature requests
\end_inset
about filing feature requests
-\begin_inset LatexCommand \index{Requesting features}
+\begin_inset LatexCommand index
+name "Requesting features"
-\begin_inset LatexCommand \index{Feature request}
+\begin_inset LatexCommand index
+name "Feature request"
\begin_layout Chapter
Installing SDCC
\begin_layout Chapter
Installing SDCC
-\begin_inset LatexCommand \index{Installation}
+\begin_inset LatexCommand index
+name "Installation"
\begin_layout Standard
For most users it is sufficient to skip to either section
\begin_layout Standard
For most users it is sufficient to skip to either section
-\begin_inset LatexCommand \ref{sub:Building-SDCC-on-Linux}
+\begin_inset LatexCommand ref
+reference "sub:Building-SDCC-on-Linux"
\end_inset
(Unix) or section
\end_inset
(Unix) or section
-\begin_inset LatexCommand \ref{sub:Windows-Install}
+\begin_inset LatexCommand ref
+reference "sub:Windows-Install"
\begin_layout Section
Configure Options
\begin_layout Section
Configure Options
-\begin_inset LatexCommand \index{Options SDCC configuration}
+\begin_inset LatexCommand index
+name "Options SDCC configuration"
\begin_layout Section
Install paths
\begin_layout Section
Install paths
-\begin_inset LatexCommand \label{sub:Install-paths}
+\begin_inset LatexCommand label
+name "sub:Install-paths"
-\begin_inset LatexCommand \index{Install paths}
+\begin_inset LatexCommand index
+name "Install paths"
\newline
Moreove
r the install path can be changed by defining DESTDIR
\newline
Moreove
r the install path can be changed by defining DESTDIR
-\begin_inset LatexCommand \index{DESTDIR}
+\begin_inset LatexCommand index
+name "DESTDIR"
\begin_layout Section
Search Paths
\begin_layout Section
Search Paths
-\begin_inset LatexCommand \label{sub:Search-Paths}
+\begin_inset LatexCommand label
+name "sub:Search-Paths"
-\begin_inset LatexCommand \index{Search path}
+\begin_inset LatexCommand index
+name "Search path"
\begin_layout Section
Building SDCC
\begin_layout Section
Building SDCC
-\begin_inset LatexCommand \index{Building SDCC}
+\begin_inset LatexCommand index
+name "Building SDCC"
\begin_layout Subsection
Building SDCC on Linux
\begin_layout Subsection
Building SDCC on Linux
-\begin_inset LatexCommand \label{sub:Building-SDCC-on-Linux}
+\begin_inset LatexCommand label
+name "sub:Building-SDCC-on-Linux"
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/snap.php}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/snap.php"
\begin_layout Enumerate
\series medium
\begin_layout Enumerate
\series medium
-Unpack the file using a command like:
+Unpack the file using a command like:
+\series default
+
\family sans
\series bold
"tar -xvzf sdcc-src-yyyymmdd-rrrr.tar.bz2
\family sans
\series bold
"tar -xvzf sdcc-src-yyyymmdd-rrrr.tar.bz2
\begin_layout Enumerate
\series medium
\begin_layout Enumerate
\series medium
\family sans
\series bold
"./configure
\family sans
\series bold
"./configure
\begin_layout Enumerate
\series medium
\begin_layout Enumerate
\series medium
\family sans
\series bold
"make
\family sans
\series bold
"make
\begin_layout Enumerate
\series medium
\begin_layout Enumerate
\series medium
\family sans
\series bold
"make install"
\family sans
\series bold
"make install"
This copies the binary executables, the include files, the libraries and
the documentation to the install directories.
Proceed with section
This copies the binary executables, the include files, the libraries and
the documentation to the install directories.
Proceed with section
-\begin_inset LatexCommand \ref{sec:Testing-the-SDCC}
+\begin_inset LatexCommand ref
+reference "sec:Testing-the-SDCC"
\newline
In order to install
Cygwin on Windows download setup.exe from
\newline
In order to install
Cygwin on Windows download setup.exe from
-\begin_inset LatexCommand \url[www.cygwin.com]{http://www.cygwin.com/}
+\begin_inset LatexCommand url
+name "www.cygwin.com"
+target "http://www.cygwin.com/"
And use an editor which can handle LF-only line endings.
Make sure not to commit files with windows line endings.
The tabulator spacing
And use an editor which can handle LF-only line endings.
Make sure not to commit files with windows line endings.
The tabulator spacing
-\begin_inset LatexCommand \index{tabulator spacing (8 columns)}
+\begin_inset LatexCommand index
+name "tabulator spacing (8 columns)"
Download the source package
\series default
either from the SDCC Subversion repository or from the
Download the source package
\series default
either from the SDCC Subversion repository or from the
-\begin_inset LatexCommand \url[snapshot builds]{http://sdcc.sourceforge.net/snap.php}
+\begin_inset LatexCommand url
+name "snapshot builds"
+target "http://sdcc.sourceforge.net/snap.php"
In order to build SDCC with MSVC
you need win32 executables of bison.exe, flex.exe, and gawk.exe.
One good place to get them is
In order to build SDCC with MSVC
you need win32 executables of bison.exe, flex.exe, and gawk.exe.
One good place to get them is
-\begin_inset LatexCommand \url[here]{http://unxutils.sourceforge.net}
+\begin_inset LatexCommand url
+name "here"
+target "http://unxutils.sourceforge.net"
\newline
Download the file UnxUtils
\newline
Download the file UnxUtils
-\begin_inset LatexCommand \index{UnxUtils}
+\begin_inset LatexCommand index
+name "UnxUtils"
\begin_layout Enumerate
Download the binary zip package from
\begin_layout Enumerate
Download the binary zip package from
-\begin_inset LatexCommand \url{http://sdcc.sf.net/snap.php}
+\begin_inset LatexCommand url
+target "http://sdcc.sf.net/snap.php"
\begin_layout Subsection
Windows Install Using the Setup Program
\begin_layout Subsection
Windows Install Using the Setup Program
-\begin_inset LatexCommand \label{sub:Windows-Install}
+\begin_inset LatexCommand label
+name "sub:Windows-Install"
for an official release from
\newline
for an official release from
\newline
-\begin_inset LatexCommand \url{http://sf.net/project/showfiles.php?group_id=599}
+\begin_inset LatexCommand url
+target "http://sf.net/project/showfiles.php?group_id=599"
sdcc-yyyymmdd-xxxx-setup.exe
\emph default
from
sdcc-yyyymmdd-xxxx-setup.exe
\emph default
from
-\begin_inset LatexCommand \url{http://sdcc.sf.net/snap.php}
+\begin_inset LatexCommand url
+target "http://sdcc.sf.net/snap.php"
\begin_layout Subsection
VPATH
\begin_layout Subsection
VPATH
-\begin_inset LatexCommand \index{VPATH}
+\begin_inset LatexCommand index
+name "VPATH"
You're invited to make changes and additions to this manual (sdcc/doc/sdccman.ly
x).
Using LyX
You're invited to make changes and additions to this manual (sdcc/doc/sdccman.ly
x).
Using LyX
-\begin_inset LatexCommand \url{http://www.lyx.org}
+\begin_inset LatexCommand url
+target "http://www.lyx.org"
\end_inset
as editor is straightforward.
Prebuilt documentation in html and pdf format is available from
\end_inset
as editor is straightforward.
Prebuilt documentation in html and pdf format is available from
-\begin_inset LatexCommand \url{http://sdcc.sf.net/snap.php}
+\begin_inset LatexCommand url
+target "http://sdcc.sf.net/snap.php"
\begin_layout Section
Reading the Documentation
\begin_layout Section
Reading the Documentation
-\begin_inset LatexCommand \index{Documentation}
+\begin_inset LatexCommand index
+name "Documentation"
\newline
You'll find the pdf version
\newline
You'll find the pdf version
-\begin_inset LatexCommand \index{PDF version of this document}
+\begin_inset LatexCommand index
+name "PDF version of this document"
-\begin_inset LatexCommand \url{http://sdcc.sf.net/doc/sdccman.pdf}
+\begin_inset LatexCommand url
+target "http://sdcc.sf.net/doc/sdccman.pdf"
-\begin_inset LatexCommand \index{HTML version of this document}
+\begin_inset LatexCommand index
+name "HTML version of this document"
\end_inset
should be online at
\end_inset
should be online at
-\begin_inset LatexCommand \url{http://sdcc.sf.net/doc/sdccman.html/index.html}
+\begin_inset LatexCommand url
+target "http://sdcc.sf.net/doc/sdccman.html/index.html"
It tries to document SDCC for several processor architectures in one document
(commercially these probably would be separate documents/products).
This document
It tries to document SDCC for several processor architectures in one document
(commercially these probably would be separate documents/products).
This document
-\begin_inset LatexCommand \index{Status of documentation}
+\begin_inset LatexCommand index
+name "Status of documentation"
Don't let this distract you.
If there f.e.
was a reference like
Don't let this distract you.
If there f.e.
was a reference like
-\begin_inset LatexCommand \url{http://www.opencores.org}
+\begin_inset LatexCommand url
+target "http://www.opencores.org"
-\begin_inset LatexCommand \index{FPGA (field programmable gate array)}
+\begin_inset LatexCommand index
+name "FPGA (field programmable gate array)"
-\begin_inset LatexCommand \url{http://sf.net/projects/fpgac}
+\begin_inset LatexCommand url
+target "http://sf.net/projects/fpgac"
-\begin_inset LatexCommand \index{FpgaC ((subset of) C to FPGA compiler)}
+\begin_inset LatexCommand index
+name "FpgaC ((subset of) C to FPGA compiler)"
\begin_layout Section
Testing the SDCC Compiler
\begin_layout Section
Testing the SDCC Compiler
-\begin_inset LatexCommand \label{sec:Testing-the-SDCC}
+\begin_inset LatexCommand label
+name "sec:Testing-the-SDCC"
-\begin_inset LatexCommand \index{version}
+\begin_inset LatexCommand index
+name "version"
Make sure that the sdcc bin directory is in your executable search path
defined by the PATH environment setting (
\series medium
Make sure that the sdcc bin directory is in your executable search path
defined by the PATH environment setting (
\series medium
-section
-\begin_inset LatexCommand \ref{sub:Install-Trouble-shooting}
+ section
+\begin_inset LatexCommand ref
+reference "sub:Install-Trouble-shooting"
-is commonly installed as described in section
+ is commonly installed as described in section
\begin_inset Quotes sld
\end_inset
\begin_inset Quotes sld
\end_inset
\series medium
Make sure the compiler works on a very simple example.
\series medium
Make sure the compiler works on a very simple example.
- Type in the following test.c program using your favorite
+ Type in the following test.c program using your favorite
\series medium
editor:
\end_layout
\series medium
editor:
\end_layout
\begin_layout Standard
\series medium
\begin_layout Standard
\series medium
-Compile this using the following command:
+Compile this using the following command:
+\series default
+
\family sans
\series bold
"sdcc -c test.c".
\family sans
\series bold
"sdcc -c test.c".
\series medium
The next step is to try it with the linker.
\series medium
The next step is to try it with the linker.
+ Type in
+\series default
+
\family sans
\series bold
"sdcc test.c
\family sans
\series bold
"sdcc test.c
\series medium
(no test.ihx, and the linker generates warnings), then the problem is most
\series medium
(no test.ihx, and the linker generates warnings), then the problem is most
\series medium
usr/local/share/sdcc/lib directory
\series default
\series medium
\series medium
usr/local/share/sdcc/lib directory
\series default
\series medium
-section
-\begin_inset LatexCommand \ref{sub:Install-Trouble-shooting}
+ section
+\begin_inset LatexCommand ref
+reference "sub:Install-Trouble-shooting"
-The final test is to ensure
+The final test is to ensure
- header files and libraries.
+header files and libraries.
Edit test.c and change it to the following:
\end_layout
Edit test.c and change it to the following:
\end_layout
\begin_layout Standard
\series medium
\begin_layout Standard
\series medium
+Compile this by typing
+\series default
+
\family sans
\series bold
"sdcc test.c"
\family sans
\series bold
"sdcc test.c"
.
This should generate a test.ihx output file, and it should give no warnings
such as not finding the string.h file.
.
This should generate a test.ihx output file, and it should give no warnings
such as not finding the string.h file.
- If it cannot find the string.h file, then the problem is that
+ If it cannot find the string.h file, then the problem is that
- cannot find the /usr/local/share/sdcc/include directory
+cannot find the /usr/local/share/sdcc/include directory
\series default
\series medium
\series default
\series medium
-section
-\begin_inset LatexCommand \ref{sub:Install-Trouble-shooting}
+ section
+\begin_inset LatexCommand ref
+reference "sub:Install-Trouble-shooting"
-print-search-dirs
\series default
-print-search-dirs
\series default
-\begin_inset LatexCommand \index{-\/-print-search-dirs}
+\begin_inset LatexCommand index
+name "-\\/-print-search-dirs"
\begin_layout Section
Install Trouble-shooting
\begin_layout Section
Install Trouble-shooting
-\begin_inset LatexCommand \label{sub:Install-Trouble-shooting}
+\begin_inset LatexCommand label
+name "sub:Install-Trouble-shooting"
-\begin_inset LatexCommand \index{Install trouble-shooting}
+\begin_inset LatexCommand index
+name "Install trouble-shooting"
This will install the compiler, other executables libraries and include
files into the appropriate directories.
See sections
This will install the compiler, other executables libraries and include
files into the appropriate directories.
See sections
-\begin_inset LatexCommand \ref{sub:Install-paths}
+\begin_inset LatexCommand ref
+reference "sub:Install-paths"
\end_inset
,\InsetSpace ~
\end_inset
,\InsetSpace ~
-\begin_inset LatexCommand \ref{sub:Search-Paths}
+\begin_inset LatexCommand ref
+reference "sub:Search-Paths"
\begin_layout Itemize
as-z80
\series bold
\begin_layout Itemize
as-z80
\series bold
-as-gbz80 - The Z80 and GameBoy Z80 assemblers.
+ as-gbz80 - The Z80 and GameBoy Z80 assemblers.
\end_layout
\begin_layout Itemize
\end_layout
\begin_layout Itemize
\begin_layout Itemize
link-z80
\series bold
\begin_layout Itemize
link-z80
\series bold
-link-gbz80 - The Z80 and GameBoy Z80 linkers.
+ link-gbz80 - The Z80 and GameBoy Z80 linkers.
\end_layout
\begin_layout Itemize
\end_layout
\begin_layout Itemize
\begin_layout Standard
The preprocessor
\begin_layout Standard
The preprocessor
-\begin_inset LatexCommand \index{sdcpp (preprocessor)}
+\begin_inset LatexCommand index
+name "sdcpp (preprocessor)"
\end_inset
is a modified version of the GNU cpp
\end_inset
is a modified version of the GNU cpp
-\begin_inset LatexCommand \index{cpp|see{sdcpp}}
+\begin_inset LatexCommand index
+name "cpp|see{sdcpp}"
-\begin_inset LatexCommand \url{http://gcc.gnu.org/}
+\begin_inset LatexCommand url
+target "http://gcc.gnu.org/"
\begin_layout Standard
S51
\begin_layout Standard
S51
-\begin_inset LatexCommand \index{s51}
+\begin_inset LatexCommand index
+name "s51"
\end_inset
is a free open source simulator developed by Daniel Drotos.
The simulator is built as part of the build process.
For more information visit Daniel's web site at:
\end_inset
is a free open source 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}
+\begin_inset LatexCommand url
+target "http://mazsola.iit.uni-miskolc.hu/~drdani/embedded/s51"
\begin_layout Standard
SDCDB
\begin_layout Standard
SDCDB
-\begin_inset LatexCommand \index{SDCDB (debugger)}
+\begin_inset LatexCommand index
+name "SDCDB (debugger)"
\end_inset
is the companion source level debugger.
More about SDCDB in section
\end_inset
is the companion source level debugger.
More about SDCDB in section
-\begin_inset LatexCommand \ref{cha:Debugging-with-SDCDB}
+\begin_inset LatexCommand ref
+reference "cha:Debugging-with-SDCDB"
\end_inset
.
The current version of the debugger uses Daniel's Simulator S51
\end_inset
.
The current version of the debugger uses Daniel's Simulator S51
-\begin_inset LatexCommand \index{s51}
+\begin_inset LatexCommand index
+name "s51"
\begin_layout Itemize
sourcefile.asm
\begin_layout Itemize
sourcefile.asm
-\begin_inset LatexCommand \index{<file>.asm}
+\begin_inset LatexCommand index
+name "<file>.asm"
\end_inset
- Assembler source
\end_inset
- Assembler source
-\begin_inset LatexCommand \index{Assembler source}
+\begin_inset LatexCommand index
+name "Assembler source"
\begin_layout Itemize
sourcefile.lst
\begin_layout Itemize
sourcefile.lst
-\begin_inset LatexCommand \index{<file>.lst}
+\begin_inset LatexCommand index
+name "<file>.lst"
\end_inset
- Assembler listing
\end_inset
- Assembler listing
-\begin_inset LatexCommand \index{Assembler listing}
+\begin_inset LatexCommand index
+name "Assembler listing"
\begin_layout Itemize
sourcefile.rst
\begin_layout Itemize
sourcefile.rst
-\begin_inset LatexCommand \index{<file>.rst}
+\begin_inset LatexCommand index
+name "<file>.rst"
\end_inset
- Assembler listing
\end_inset
- Assembler listing
-\begin_inset LatexCommand \index{Assembler listing}
+\begin_inset LatexCommand index
+name "Assembler listing"
\begin_layout Itemize
sourcefile.sym
\begin_layout Itemize
sourcefile.sym
-\begin_inset LatexCommand \index{<file>.sym}
+\begin_inset LatexCommand index
+name "<file>.sym"
\end_inset
- symbol listing
\end_inset
- symbol listing
-\begin_inset LatexCommand \index{Symbol listing}
+\begin_inset LatexCommand index
+name "Symbol listing"
\begin_layout Itemize
sourcefile.rel
\begin_layout Itemize
sourcefile.rel
-\begin_inset LatexCommand \index{<file>.rel}
+\begin_inset LatexCommand index
+name "<file>.rel"
\end_inset
or sourcefile.o
\end_inset
or sourcefile.o
-\begin_inset LatexCommand \index{<file>.o}
+\begin_inset LatexCommand index
+name "<file>.o"
-\begin_inset LatexCommand \index{Object file}
+\begin_inset LatexCommand index
+name "Object file"
\begin_layout Itemize
sourcefile.map
\begin_layout Itemize
sourcefile.map
-\begin_inset LatexCommand \index{<file>.map}
+\begin_inset LatexCommand index
+name "<file>.map"
\end_inset
- The memory map
\end_inset
- The memory map
-\begin_inset LatexCommand \index{Memory map}
+\begin_inset LatexCommand index
+name "Memory map"
\begin_layout Itemize
sourcefile.mem
\begin_layout Itemize
sourcefile.mem
-\begin_inset LatexCommand \index{<file>.mem}
+\begin_inset LatexCommand index
+name "<file>.mem"
\begin_layout Itemize
sourcefile.ihx
\begin_layout Itemize
sourcefile.ihx
-\begin_inset LatexCommand \index{<file>.ihx}
+\begin_inset LatexCommand index
+name "<file>.ihx"
\end_inset
- The load module in Intel hex format
\end_inset
- The load module in Intel hex format
-\begin_inset LatexCommand \index{Intel hex format}
+\begin_inset LatexCommand index
+name "Intel hex format"
\end_inset
(you can select the Motorola S19 format
\end_inset
(you can select the Motorola S19 format
-\begin_inset LatexCommand \index{Motorola S19 format}
+\begin_inset LatexCommand index
+name "Motorola S19 format"
-\begin_inset LatexCommand \index{-\/-out-fmt-s19}
+\begin_inset LatexCommand index
+name "-\\/-out-fmt-s19"
\family default
\shape default
\family default
\shape default
-\begin_inset LatexCommand \index{objdump (tool)}
+\begin_inset LatexCommand index
+name "objdump (tool)"
\family sans
\shape italic
\family sans
\shape italic
\family default
\shape default
\family default
\shape default
-\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)}
+\begin_inset LatexCommand index
+name "srecord (bin, hex, ... tool)"
\end_inset
- see also section
\end_inset
- see also section
-\begin_inset LatexCommand \vref{sub:Postprocessing-the-Intel}
+\begin_inset LatexCommand vref
+reference "sub:Postprocessing-the-Intel"
\end_inset
).
Both formats are documented in the documentation of srecord
\end_inset
).
Both formats are documented in the documentation of srecord
-\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)}
+\begin_inset LatexCommand index
+name "srecord (bin, hex, ... tool)"
\begin_layout Itemize
sourcefile.adb
\begin_layout Itemize
sourcefile.adb
-\begin_inset LatexCommand \index{<file>.adb}
+\begin_inset LatexCommand index
+name "<file>.adb"
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand index
+name "-\\/-debug"
\begin_layout Itemize
sourcefile.cdb
\begin_layout Itemize
sourcefile.cdb
-\begin_inset LatexCommand \index{<file>.cdb}
+\begin_inset LatexCommand index
+name "<file>.cdb"
\begin_layout Itemize
sourcefile.
- (no extension)
\begin_layout Itemize
sourcefile.
- (no extension)
-\begin_inset LatexCommand \index{<file> (no extension)}
+\begin_inset LatexCommand index
+name "<file> (no extension)"
\end_inset
An optional AOMF or AOMF51
\end_inset
An optional AOMF or AOMF51
-\begin_inset LatexCommand \index{AOMF, AOMF51}
+\begin_inset LatexCommand index
+name "AOMF, AOMF51"
-\begin_inset LatexCommand \label{OMF file}
+\begin_inset LatexCommand label
+name "OMF file"
\emph default
bsolute
\emph on
\emph default
bsolute
\emph on
\emph default
ormat is a subformat of the OMF51 format and is commonly used by third party
tools (debuggers
\emph default
ormat is a subformat of the OMF51 format and is commonly used by third party
tools (debuggers
-\begin_inset LatexCommand \index{Debugger}
+\begin_inset LatexCommand index
+name "Debugger"
\begin_layout Itemize
sourcefile.dump*
\begin_layout Itemize
sourcefile.dump*
-\begin_inset LatexCommand \index{<file>.dump*}
+\begin_inset LatexCommand index
+name "<file>.dump*"
\end_inset
-dumpall) (see section
\end_inset
-dumpall) (see section
-\begin_inset LatexCommand \ref{sub:Intermediate-Dump-Options}
+\begin_inset LatexCommand ref
+reference "sub:Intermediate-Dump-Options"
\end_inset
\InsetSpace ~
and section
\end_inset
\InsetSpace ~
and section
-\begin_inset LatexCommand \ref{sub:The-anatomy-of}
+\begin_inset LatexCommand ref
+reference "sub:The-anatomy-of"
\begin_layout Subsection
Postprocessing the Intel Hex
\begin_layout Subsection
Postprocessing the Intel Hex
-\begin_inset LatexCommand \index{Intel hex format}
+\begin_inset LatexCommand index
+name "Intel hex format"
-\begin_inset LatexCommand \label{sub:Postprocessing-the-Intel}
+\begin_inset LatexCommand label
+name "sub:Postprocessing-the-Intel"
\begin_layout Standard
In most cases this won't be needed but the Intel Hex file
\begin_layout Standard
In most cases this won't be needed but the Intel Hex file
-\begin_inset LatexCommand \index{<file>.ihx}
+\begin_inset LatexCommand index
+name "<file>.ihx"
-\begin_inset LatexCommand \index{packihx (tool)}
+\begin_inset LatexCommand index
+name "packihx (tool)"
\family sans
\series bold
\family sans
\series bold
- packihx sourcefile.ihx >sourcefile.hex
+packihx sourcefile.ihx >sourcefile.hex
\family default
\series default
\newline
\newline
\family default
\series default
\newline
\newline
-The separately available
+The separately available
-\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)}
+\begin_inset LatexCommand index
+name "srecord (bin, hex, ... tool)"
\end_inset
package additionally allows to set undefined locations to a predefined
value, to insert checksums
\end_inset
package additionally allows to set undefined locations to a predefined
value, to insert checksums
-\begin_inset LatexCommand \index{checksum}
+\begin_inset LatexCommand index
+name "checksum"
\begin_layout Standard
the command backfills
\begin_layout Standard
the command backfills
-\begin_inset LatexCommand \index{backfill unused memory}
+\begin_inset LatexCommand index
+name "backfill unused memory"
\family default
\series default
The srecord package is available at
\family default
\series default
The srecord package is available at
-\begin_inset LatexCommand \url{http://sf.net/projects/srecord}
+\begin_inset LatexCommand url
+target "http://sf.net/projects/srecord"
main()
\emph default
function and link
main()
\emph default
function and link
-\begin_inset LatexCommand \index{Linker}
+\begin_inset LatexCommand index
+name "Linker"
\family default
\series default
\family default
\series default
-\begin_inset LatexCommand \index{<file>.rel}
+\begin_inset LatexCommand index
+name "<file>.rel"
\newline
Alternatively,
\emph on
\newline
Alternatively,
\emph on
-can be separately compiled as well:
+ can be separately compiled as well:
\family sans
\series bold
\family sans
\series bold
\emph on
main()
\emph default
\emph on
main()
\emph default
- function
-\emph on
-
-\emph default
\noun on
must
\noun default
\noun on
must
\noun default
file specified in the command line, since the linkage editor processes
file in the order they are presented to it.
The linker is invoked from SDCC using a script file with extension .lnk
file specified in the command line, since the linkage editor processes
file in the order they are presented to it.
The linker is invoked from SDCC using a script file with extension .lnk
-\begin_inset LatexCommand \index{<file>.lnk}
+\begin_inset LatexCommand index
+name "<file>.lnk"
\begin_layout Subsection
Projects with Additional Libraries
\begin_layout Subsection
Projects with Additional Libraries
-\begin_inset LatexCommand \index{Libraries}
+\begin_inset LatexCommand index
+name "Libraries"
for how to create a
\emph on
.lib
for how to create a
\emph on
.lib
-\begin_inset LatexCommand \index{<file>.lib}
+\begin_inset LatexCommand index
+name "<file>.lib"
\emph on
foomain.c
\emph default
\emph on
foomain.c
\emph default
\emph default
in the directory
\emph on
\emph default
in the directory
\emph on
\family default
\series default
\family default
\series default
\emph default
must be an absolute path name.
\newline
\emph default
must be an absolute path name.
\newline
The most efficient way to use libraries is
to keep separate modules in separate source files.
The lib file now should name all the modules.rel
The most efficient way to use libraries is
to keep separate modules in separate source files.
The lib file now should name all the modules.rel
-\begin_inset LatexCommand \index{<file>.rel}
+\begin_inset LatexCommand index
+name "<file>.rel"
\begin_layout Subsection
Using sdcclib to Create and Manage Libraries
\begin_layout Subsection
Using sdcclib to Create and Manage Libraries
-\begin_inset LatexCommand \index{sdcclib}
+\begin_inset LatexCommand index
+name "sdcclib"
\family sans
\series bold
sdcclib -?
\family sans
\series bold
sdcclib -?
-\begin_inset LatexCommand \index{sdcclib}
+\begin_inset LatexCommand index
+name "sdcclib"
sdcclib libint.lib _divsint.rel
\family default
sdcclib libint.lib _divsint.rel
\family default
-\begin_inset LatexCommand \index{sdcclib}
+\begin_inset LatexCommand index
+name "sdcclib"
sdcclib -s libint.lib
\family default
sdcclib -s libint.lib
\family default
-\begin_inset LatexCommand \index{sdcclib}
+\begin_inset LatexCommand index
+name "sdcclib"
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand index
+name "-\\/-debug"
\begin_layout Section
Command Line Options
\begin_layout Section
Command Line Options
-\begin_inset LatexCommand \index{Command Line Options}
+\begin_inset LatexCommand index
+name "Command Line Options"
-\begin_inset LatexCommand \label{sec:Command-Line-Options}
+\begin_inset LatexCommand label
+name "sec:Command-Line-Options"
\begin_layout Subsection
Processor Selection Options
\begin_layout Subsection
Processor Selection Options
-\begin_inset LatexCommand \index{Options processor selection}
+\begin_inset LatexCommand index
+name "Options processor selection"
-\begin_inset LatexCommand \index{Processor selection options}
+\begin_inset LatexCommand index
+name "Processor selection options"
-\begin_inset LatexCommand \index{-mmcs51}
+\begin_inset LatexCommand index
+name "-mmcs51"
\end_inset
\series default
Generate code for the Intel MCS51
\end_inset
\series default
Generate code for the Intel MCS51
-\begin_inset LatexCommand \index{MCS51}
+\begin_inset LatexCommand index
+name "MCS51"
-\begin_inset LatexCommand \index{-mds390}
+\begin_inset LatexCommand index
+name "-mds390"
\end_inset
\series default
Generate code for the Dallas DS80C390
\end_inset
\series default
Generate code for the Dallas DS80C390
-\begin_inset LatexCommand \index{DS80C390}
+\begin_inset LatexCommand index
+name "DS80C390"
-\begin_inset LatexCommand \index{-mds400}
+\begin_inset LatexCommand index
+name "-mds400"
\end_inset
\series default
Generate code for the Dallas DS80C400
\end_inset
\series default
Generate code for the Dallas DS80C400
-\begin_inset LatexCommand \index{DS80C400}
+\begin_inset LatexCommand index
+name "DS80C400"
-\begin_inset LatexCommand \index{-mhc08}
+\begin_inset LatexCommand index
+name "-mhc08"
\end_inset
\series default
Generate code for the Freescale/Motorola HC08
\end_inset
\series default
Generate code for the Freescale/Motorola HC08
-\begin_inset LatexCommand \index{HC08}
+\begin_inset LatexCommand index
+name "HC08"
-\begin_inset LatexCommand \index{-mz80}
+\begin_inset LatexCommand index
+name "-mz80"
\end_inset
\series default
Generate code for the Zilog Z80
\end_inset
\series default
Generate code for the Zilog Z80
-\begin_inset LatexCommand \index{Z80}
+\begin_inset LatexCommand index
+name "Z80"
-\begin_inset LatexCommand \index{-mgbz80}
+\begin_inset LatexCommand index
+name "-mgbz80"
\end_inset
\series default
Generate code for the GameBoy Z80
\end_inset
\series default
Generate code for the GameBoy Z80
-\begin_inset LatexCommand \index{gbz80 (GameBoy Z80)}
+\begin_inset LatexCommand index
+name "gbz80 (GameBoy Z80)"
-\begin_inset LatexCommand \index{-mavr}
+\begin_inset LatexCommand index
+name "-mavr"
\end_inset
\series default
Generate code for the Atmel AVR
\end_inset
\series default
Generate code for the Atmel AVR
-\begin_inset LatexCommand \index{AVR}
+\begin_inset LatexCommand index
+name "AVR"
\end_inset
processor (Not maintained, not complete).
AVR users should probably have a look at winavr
\end_inset
processor (Not maintained, not complete).
AVR users should probably have a look at winavr
-\begin_inset LatexCommand \url{http://sourceforge.net/projects/winavr}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/projects/winavr"
-\begin_inset LatexCommand \url{http://www.avrfreaks.net/index.php?name=PNphpBB2&file=index}
+\begin_inset LatexCommand url
+target "http://www.avrfreaks.net/index.php?name=PNphpBB2&file=index"
-\begin_inset LatexCommand \index{-mpic14}
+\begin_inset LatexCommand index
+name "-mpic14"
\end_inset
\series default
Generate code for the Microchip PIC 14
\end_inset
\series default
Generate code for the Microchip PIC 14
-\begin_inset LatexCommand \index{PIC14}
+\begin_inset LatexCommand index
+name "PIC14"
-\begin_inset LatexCommand \index{-mpic16}
+\begin_inset LatexCommand index
+name "-mpic16"
\end_inset
\series default
Generate code for the Microchip PIC 16
\end_inset
\series default
Generate code for the Microchip PIC 16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
-mtlcs900h
\series default
Generate code for the Toshiba TLCS-900H
-mtlcs900h
\series default
Generate code for the Toshiba TLCS-900H
-\begin_inset LatexCommand \index{TLCS-900H}
+\begin_inset LatexCommand index
+name "TLCS-900H"
-\begin_inset LatexCommand \index{-mxa51}
+\begin_inset LatexCommand index
+name "-mxa51"
\end_inset
\series default
Generate code for the Phillips XA51
\end_inset
\series default
Generate code for the Phillips XA51
-\begin_inset LatexCommand \index{XA51}
+\begin_inset LatexCommand index
+name "XA51"
\begin_layout Subsection
Preprocessor Options
\begin_layout Subsection
Preprocessor Options
-\begin_inset LatexCommand \index{Options preprocessor}
+\begin_inset LatexCommand index
+name "Options preprocessor"
-\begin_inset LatexCommand \index{Preprocessor options}
+\begin_inset LatexCommand index
+name "Preprocessor options"
-\begin_inset LatexCommand \index{sdcpp (preprocessor)}
+\begin_inset LatexCommand index
+name "sdcpp (preprocessor)"
-\begin_inset LatexCommand \index{-I<path>}
+\begin_inset LatexCommand index
+name "-I<path>"
\series bold
-D<macro[=value]>
\series bold
-D<macro[=value]>
-\begin_inset LatexCommand \index{-D<macro[=value]>}
+\begin_inset LatexCommand index
+name "-D<macro[=value]>"
-\begin_inset LatexCommand \index{-M}
+\begin_inset LatexCommand index
+name "-M"
The list of rules is printed on standard output instead of the preprocessed
C program.
`-M' implies `-E
The list of rules is printed on standard output instead of the preprocessed
C program.
`-M' implies `-E
-\begin_inset LatexCommand \index{-E}
+\begin_inset LatexCommand index
+name "-E"
-\begin_inset LatexCommand \index{-C}
+\begin_inset LatexCommand index
+name "-C"
-\begin_inset LatexCommand \index{-MM}
+\begin_inset LatexCommand index
+name "-MM"
Like `-M' but the output mentions only the user header files included with
`#include
\begin_inset Quotes eld
Like `-M' but the output mentions only the user header files included with
`#include
\begin_inset Quotes eld
\series bold
-Aquestion(answer)
\series bold
-Aquestion(answer)
-\begin_inset LatexCommand \index{-Aquestion(answer)}
+\begin_inset LatexCommand index
+name "-Aquestion(answer)"
-\begin_inset LatexCommand \index{-Umacro}
+\begin_inset LatexCommand index
+name "-Umacro"
-\begin_inset LatexCommand \index{-dM}
+\begin_inset LatexCommand index
+name "-dM"
-\begin_inset LatexCommand \index{-dD}
+\begin_inset LatexCommand index
+name "-dD"
-\begin_inset LatexCommand \index{-dN}
+\begin_inset LatexCommand index
+name "-dN"
Like `-dD' except that the macro arguments and contents are omitted.
Only `#define name' is included in the output.
\end_layout
Like `-dD' except that the macro arguments and contents are omitted.
Only `#define name' is included in the output.
\end_layout
\series bold
-pedantic-parse-number
\series bold
-pedantic-parse-number
-\begin_inset LatexCommand \index{pedantic}
+\begin_inset LatexCommand index
+name "pedantic"
-\begin_inset LatexCommand \index{-pedantic-parse-number}
+\begin_inset LatexCommand index
+name "-pedantic-parse-number"
-\begin_inset LatexCommand \label{lyx:-pedantic-parse-number}
+\begin_inset LatexCommand label
+name "lyx:-pedantic-parse-number"
Pedantic parse numbers so that situations like 0xfe-LO_B(3) are parsed properly
and the macro LO_B(3) gets expanded.
See also #pragma pedantic_parse_number
Pedantic parse numbers so that situations like 0xfe-LO_B(3) are parsed properly
and the macro LO_B(3) gets expanded.
See also #pragma pedantic_parse_number
-\begin_inset LatexCommand \vpageref{ite:pedantic_parse_number}
+\begin_inset LatexCommand vpageref
+reference "ite:pedantic_parse_number"
-\begin_inset LatexCommand \ref{sec:Pragmas}
+\begin_inset LatexCommand ref
+reference "sec:Pragmas"
preprocessorOption[,preprocessorOption]
\series default
preprocessorOption[,preprocessorOption]
\series default
-\begin_inset LatexCommand \index{-Wp preprocessorOption[,preprocessorOption]}
+\begin_inset LatexCommand index
+name "-Wp preprocessorOption[,preprocessorOption]"
-\begin_inset LatexCommand \index{sdcpp (preprocessor)}
+\begin_inset LatexCommand index
+name "sdcpp (preprocessor)"
cpp
\emph default
of the GNU Compiler Collection
cpp
\emph default
of the GNU Compiler Collection
-\begin_inset LatexCommand \index{gcc (GNU Compiler Collection)}
+\begin_inset LatexCommand index
+name "gcc (GNU Compiler Collection)"
-\begin_inset LatexCommand \url{http://gcc.gnu.org/}
+\begin_inset LatexCommand url
+target "http://gcc.gnu.org/"
CPP\InsetSpace ~
Manual
at
CPP\InsetSpace ~
Manual
at
-\begin_inset LatexCommand \htmlurl{http://www.gnu.org/software/gcc/onlinedocs/}
+\begin_inset LatexCommand htmlurl
+target "http://www.gnu.org/software/gcc/onlinedocs/"
\begin_layout Subsection
Linker Options
\begin_layout Subsection
Linker Options
-\begin_inset LatexCommand \index{Options linker}
+\begin_inset LatexCommand index
+name "Options linker"
-\begin_inset LatexCommand \index{Linker options}
+\begin_inset LatexCommand index
+name "Linker options"
-\begin_inset LatexCommand \index{-\/-lib-path <path>}
+\begin_inset LatexCommand index
+name "-\\/-lib-path <path>"
-\begin_inset LatexCommand \index{-L -\/-lib-path}
+\begin_inset LatexCommand index
+name "-L -\\/-lib-path"
\InsetSpace ~
<absolute path to additional libraries> This option is passed to the linkage
editor's additional libraries
\InsetSpace ~
<absolute path to additional libraries> This option is passed to the linkage
editor's additional libraries
-\begin_inset LatexCommand \index{Libraries}
+\begin_inset LatexCommand index
+name "Libraries"
-xram-loc
\series default
-xram-loc
\series default
-\begin_inset LatexCommand \index{-\/-xram-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-xram-loc <Value>"
\end_inset
\InsetSpace ~
<Value> The start location of the external ram
\end_inset
\InsetSpace ~
<Value> The start location of the external ram
-\begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "xdata (mcs51, ds390 storage class)"
-code-loc
\series default
-code-loc
\series default
-\begin_inset LatexCommand \index{-\/-code-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-code-loc <Value>"
\end_inset
\InsetSpace ~
<Value> The start location of the code
\end_inset
\InsetSpace ~
<Value> The start location of the code
-\begin_inset LatexCommand \index{code}
+\begin_inset LatexCommand index
+name "code"
\end_inset
segment, default value 0.
Note when this option is used the interrupt vector table
\end_inset
segment, default value 0.
Note when this option is used the interrupt vector table
-\begin_inset LatexCommand \index{interrupt vector table}
+\begin_inset LatexCommand index
+name "interrupt vector table"
-stack-loc
\series default
-stack-loc
\series default
-\begin_inset LatexCommand \index{-\/-stack-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-stack-loc <Value>"
\end_inset
\InsetSpace ~
<Value> By default the stack
\end_inset
\InsetSpace ~
<Value> By default the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
\series default
\InsetSpace ~
\series default
\InsetSpace ~
-\begin_inset LatexCommand \index{-\/-pack-iram}
+\begin_inset LatexCommand index
+name "-\\/-pack-iram"
\series default
\InsetSpace ~
\series default
\InsetSpace ~
-\begin_inset LatexCommand \index{-\/-no-pack-iram}
+\begin_inset LatexCommand index
+name "-\\/-no-pack-iram"
-xstack-loc
\series default
-xstack-loc
\series default
-\begin_inset LatexCommand \index{-\/-xstack-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-xstack-loc <Value>"
\end_inset
\InsetSpace ~
<Value> By default the external stack
\end_inset
\InsetSpace ~
<Value> By default the external stack
-\begin_inset LatexCommand \index{xstack}
+\begin_inset LatexCommand index
+name "xstack"
\end_inset
is placed after the pdata
\end_inset
is placed after the pdata
-\begin_inset LatexCommand \index{pdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "pdata (mcs51, ds390 storage class)"
-data-loc
\series default
-data-loc
\series default
-\begin_inset LatexCommand \index{-\/-data-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-data-loc <Value>"
\end_inset
\InsetSpace ~
<Value> The start location of the internal ram data
\end_inset
\InsetSpace ~
<Value> The start location of the internal ram data
-\begin_inset LatexCommand \index{data (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "data (mcs51, ds390 storage class)"
-idata-loc
\series default
-idata-loc
\series default
-\begin_inset LatexCommand \index{-\/-idata-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-idata-loc <Value>"
\end_inset
\InsetSpace ~
<Value> The start location of the indirectly addressable internal ram
\end_inset
\InsetSpace ~
<Value> The start location of the indirectly addressable internal ram
-\begin_inset LatexCommand \index{idata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "idata (mcs51, ds390 storage class)"
\series default
\InsetSpace ~
<Value> The start location of the bit
\series default
\InsetSpace ~
<Value> The start location of the bit
-\begin_inset LatexCommand \index{bit}
+\begin_inset LatexCommand index
+name "bit"
-\begin_inset LatexCommand \index{-\/-out-fmt-ihx}
+\begin_inset LatexCommand index
+name "-\\/-out-fmt-ihx"
The linker output (final object code) is in Intel Hex format.
The linker output (final object code) is in Intel Hex format.
-\begin_inset LatexCommand \index{Intel hex format}
+\begin_inset LatexCommand index
+name "Intel hex format"
\end_inset
This is the default option.
The format itself is documented in the documentation of srecord
\end_inset
This is the default option.
The format itself is documented in the documentation of srecord
-\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)}
+\begin_inset LatexCommand index
+name "srecord (bin, hex, ... tool)"
-\begin_inset LatexCommand \index{-\/-out-fmt-s19}
+\begin_inset LatexCommand index
+name "-\\/-out-fmt-s19"
The linker output (final object code) is in Motorola S19 format
The linker output (final object code) is in Motorola S19 format
-\begin_inset LatexCommand \index{Motorola S19 format}
+\begin_inset LatexCommand index
+name "Motorola S19 format"
-\begin_inset LatexCommand \index{-\/-out-fmt-s19}
+\begin_inset LatexCommand index
+name "-\\/-out-fmt-s19"
-\begin_inset LatexCommand \index{HC08!Options!-\/-out-fmt-elf}
+\begin_inset LatexCommand index
+name "HC08!Options!-\\/-out-fmt-elf"
The linker output (final object code) is in ELF format
The linker output (final object code) is in ELF format
-\begin_inset LatexCommand \index{ELF format}
+\begin_inset LatexCommand index
+name "ELF format"
\end_inset
.
(Currently only supported for the HC08
\end_inset
.
(Currently only supported for the HC08
-\begin_inset LatexCommand \index{HC08}
+\begin_inset LatexCommand index
+name "HC08"
linkOption[,linkOption]
\series default
linkOption[,linkOption]
\series default
-\begin_inset LatexCommand \index{-Wl linkOption[,linkOption]}
+\begin_inset LatexCommand index
+name "-Wl linkOption[,linkOption]"
-\begin_inset LatexCommand \label{lyx:-Wl option}
+\begin_inset LatexCommand label
+name "lyx:-Wl option"
Either use the double quotes around this option or use no space (e.g.
-Wl-bCSEG=0x1000).
See also #pragma constseg and #pragma codeseg in section
Either use the double quotes around this option or use no space (e.g.
-Wl-bCSEG=0x1000).
See also #pragma constseg and #pragma codeseg in section
-\begin_inset LatexCommand \ref{sec:Pragmas}
+\begin_inset LatexCommand ref
+reference "sec:Pragmas"
\begin_layout Subsection
MCS51 Options
\begin_layout Subsection
MCS51 Options
-\begin_inset LatexCommand \index{Options MCS51}
+\begin_inset LatexCommand index
+name "Options MCS51"
-\begin_inset LatexCommand \index{MCS51 options}
+\begin_inset LatexCommand index
+name "MCS51 options"
-\begin_inset LatexCommand \index{-\/-model-small}
+\begin_inset LatexCommand index
+name "-\\/-model-small"
\end_inset
\series default
\size large
\end_inset
\series default
\size large
Generate code for Small Model programs, see section Memory Models for more
details.
This is the default model.
Generate code for Small Model programs, see section Memory Models for more
details.
This is the default model.
-\begin_inset LatexCommand \index{-\/-model-medium}
+\begin_inset LatexCommand index
+name "-\\/-model-medium"
-\begin_inset LatexCommand \index{-\/-model-large}
+\begin_inset LatexCommand index
+name "-\\/-model-large"
-\begin_inset LatexCommand \index{-\/-xstack}
+\begin_inset LatexCommand index
+name "-\\/-xstack"
\end_inset
\series default
Uses a pseudo stack in the pdata
\end_inset
\series default
Uses a pseudo stack in the pdata
-\begin_inset LatexCommand \index{pdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "pdata (mcs51, ds390 storage class)"
\end_inset
area (usually the first 256 bytes in the external ram) for allocating variables
and passing parameters.
See section
\end_inset
area (usually the first 256 bytes in the external ram) for allocating variables
and passing parameters.
See section
-\begin_inset LatexCommand \ref{sub:External-Stack}
+\begin_inset LatexCommand ref
+reference "sub:External-Stack"
\series default
\InsetSpace ~
<Value>
\series default
\InsetSpace ~
<Value>
-\begin_inset LatexCommand \index{-\/-iram-size <Value>}
+\begin_inset LatexCommand index
+name "-\\/-iram-size <Value>"
\series default
\InsetSpace ~
<Value>
\series default
\InsetSpace ~
<Value>
-\begin_inset LatexCommand \index{-\/-xram-size <Value>}
+\begin_inset LatexCommand index
+name "-\\/-xram-size <Value>"
\series default
\InsetSpace ~
<Value>
\series default
\InsetSpace ~
<Value>
-\begin_inset LatexCommand \index{-\/-code-size <Value>}
+\begin_inset LatexCommand index
+name "-\\/-code-size <Value>"
\series default
\InsetSpace ~
<Value>
\series default
\InsetSpace ~
<Value>
-\begin_inset LatexCommand \index{-\/-stack-size <Value>}
+\begin_inset LatexCommand index
+name "-\\/-stack-size <Value>"
\series default
\InsetSpace ~
\series default
\InsetSpace ~
-\begin_inset LatexCommand \index{-\/-pack-iram}
+\begin_inset LatexCommand index
+name "-\\/-pack-iram"
\series default
\InsetSpace ~
\series default
\InsetSpace ~
-\begin_inset LatexCommand \index{-\/-no-pack-iram}
+\begin_inset LatexCommand index
+name "-\\/-no-pack-iram"
\series default
\InsetSpace ~
\series default
\InsetSpace ~
-\begin_inset LatexCommand \index{-\/-acall-ajmp}
+\begin_inset LatexCommand index
+name "-\\/-acall-ajmp"
\begin_layout Subsection
DS390 / DS400 Options
\begin_layout Subsection
DS390 / DS400 Options
-\begin_inset LatexCommand \index{Options DS390}
+\begin_inset LatexCommand index
+name "Options DS390"
-\begin_inset LatexCommand \index{DS390}
+\begin_inset LatexCommand index
+name "DS390"
-model-flat24
\series default
-model-flat24
\series default
-\begin_inset LatexCommand \index{DS390!Options!-\/-model-flat24}
+\begin_inset LatexCommand index
+name "DS390!Options!-\\/-model-flat24"
Generate 24-bit flat mode code.
This is the one and only that the ds390 code generator supports right now
and is default when using
Generate 24-bit flat mode code.
This is the one and only that the ds390 code generator supports right now
and is default when using
\end_inset
-protect-sp-update
\end_inset
-protect-sp-update
-\begin_inset LatexCommand \index{DS390!Options!-\/-protect-sp-update}
+\begin_inset LatexCommand index
+name "DS390!Options!-\\/-protect-sp-update"
-stack-10bit
\series default
-stack-10bit
\series default
-\begin_inset LatexCommand \index{DS390!Options!-\/-stack-10bit}
+\begin_inset LatexCommand index
+name "DS390!Options!-\\/-stack-10bit"
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand index
+name "-\\/-stack-auto"
-\begin_inset LatexCommand \index{-\/-xstack}
+\begin_inset LatexCommand index
+name "-\\/-xstack"
-\begin_inset LatexCommand \index{DS390!Options!-\/-stack-probe}
+\begin_inset LatexCommand index
+name "DS390!Options!-\\/-stack-probe"
-\begin_inset LatexCommand \index{DS390!Options!-\/-tini-libid}
+\begin_inset LatexCommand index
+name "DS390!Options!-\\/-tini-libid"
\end_inset
-use-accelerator
\end_inset
-use-accelerator
-\begin_inset LatexCommand \index{DS390!Options!-\/-use-accelerator}
+\begin_inset LatexCommand index
+name "DS390!Options!-\\/-use-accelerator"
\begin_layout Subsection
Z80 Options
\begin_layout Subsection
Z80 Options
-\begin_inset LatexCommand \index{Options Z80}
+\begin_inset LatexCommand index
+name "Options Z80"
-\begin_inset LatexCommand \index{Z80}
+\begin_inset LatexCommand index
+name "Z80"
-callee-saves-bc
\series default
-callee-saves-bc
\series default
-\begin_inset LatexCommand \index{Z80!Options!-\/-callee-saves-bc}
+\begin_inset LatexCommand index
+name "Z80!Options!-\\/-callee-saves-bc"
Force a called function to always save BC.
\end_layout
Force a called function to always save BC.
\end_layout
-no-std-crt0
\series default
-no-std-crt0
\series default
-\begin_inset LatexCommand \index{Z80!Options!-\/-no-std-crt0}
+\begin_inset LatexCommand index
+name "Z80!Options!-\\/-no-std-crt0"
-portmode=
\series default
<Value>
-portmode=
\series default
<Value>
-\begin_inset LatexCommand \index{Z80!Options!-\/-portmode=<Value>}
+\begin_inset LatexCommand index
+name "Z80!Options!-\\/-portmode=<Value>"
-asm=
\series default
<Value>
-asm=
\series default
<Value>
-\begin_inset LatexCommand \index{Z80!Options!-\/-asm=<Value>}
+\begin_inset LatexCommand index
+name "Z80!Options!-\\/-asm=<Value>"
\series default
\InsetSpace ~
<Value>
\series default
\InsetSpace ~
<Value>
-\begin_inset LatexCommand \index{Z80!Options!-\/-codeseg <Value>}
+\begin_inset LatexCommand index
+name "Z80!Options!-\\/-codeseg <Value>"
\series default
\InsetSpace ~
<Value>
\series default
\InsetSpace ~
<Value>
-\begin_inset LatexCommand \index{Z80!Options!-\/-constseg <Value>}
+\begin_inset LatexCommand index
+name "Z80!Options!-\\/-constseg <Value>"
\begin_layout Subsection
GBZ80 Options
\begin_layout Subsection
GBZ80 Options
-\begin_inset LatexCommand \index{Options GBZ80}
+\begin_inset LatexCommand index
+name "Options GBZ80"
-\begin_inset LatexCommand \index{GBZ80}
+\begin_inset LatexCommand index
+name "GBZ80"
-callee-saves-bc
\series default
-callee-saves-bc
\series default
-\begin_inset LatexCommand \index{GBZ80!Options!-\/-callee-saves-bc}
+\begin_inset LatexCommand index
+name "GBZ80!Options!-\\/-callee-saves-bc"
Force a called function to always save BC.
\end_layout
Force a called function to always save BC.
\end_layout
-no-std-crt0
\series default
-no-std-crt0
\series default
-\begin_inset LatexCommand \index{Z80!Options!-\/-no-std-crt0}
+\begin_inset LatexCommand index
+name "Z80!Options!-\\/-no-std-crt0"
\series default
\InsetSpace ~
<Num>
\series default
\InsetSpace ~
<Num>
-\begin_inset LatexCommand \index{GBZ80!Options!-bo <Num>}
+\begin_inset LatexCommand index
+name "GBZ80!Options!-bo <Num>"
\series default
\InsetSpace ~
<Num>
\series default
\InsetSpace ~
<Num>
-\begin_inset LatexCommand \index{GBZ80!Options!-ba <Num>}
+\begin_inset LatexCommand index
+name "GBZ80!Options!-ba <Num>"
\series default
\InsetSpace ~
<Value>
\series default
\InsetSpace ~
<Value>
-\begin_inset LatexCommand \index{GBZ80!Options!-\/-codeseg <Value>}
+\begin_inset LatexCommand index
+name "GBZ80!Options!-\\/-codeseg <Value>"
\series default
\InsetSpace ~
<Value>
\series default
\InsetSpace ~
<Value>
-\begin_inset LatexCommand \index{GBZ80!Options!-\/-constseg <Value>}
+\begin_inset LatexCommand index
+name "GBZ80!Options!-\\/-constseg <Value>"
\begin_layout Subsection
Optimization Options
\begin_layout Subsection
Optimization Options
-\begin_inset LatexCommand \index{Options optimization}
+\begin_inset LatexCommand index
+name "Options optimization"
-\begin_inset LatexCommand \index{Optimization options}
+\begin_inset LatexCommand index
+name "Optimization options"
-\begin_inset LatexCommand \index{-\/-nogcse}
+\begin_inset LatexCommand index
+name "-\\/-nogcse"
loc
\emph default
ations, sloc
loc
\emph default
ations, sloc
-\begin_inset LatexCommand \index{sloc (spill location)}
+\begin_inset LatexCommand index
+name "sloc (spill location)"
will indicate the number of extra bytes it allocated.
It is recommended that this option NOT be used, #pragma\InsetSpace ~
nogcse
will indicate the number of extra bytes it allocated.
It is recommended that this option NOT be used, #pragma\InsetSpace ~
nogcse
-\begin_inset LatexCommand \index{\#pragma nogcse}
+\begin_inset LatexCommand index
+name "\\#pragma nogcse"
\end_inset
can be used to turn off global subexpression elimination
\end_inset
can be used to turn off global subexpression elimination
-\begin_inset LatexCommand \index{Subexpression elimination}
+\begin_inset LatexCommand index
+name "Subexpression elimination"
-\begin_inset LatexCommand \index{-\/-noinvariant}
+\begin_inset LatexCommand index
+name "-\\/-noinvariant"
explained for the previous option.
For more details of loop optimizations performed see Loop Invariants in
section
explained for the previous option.
For more details of loop optimizations performed see Loop Invariants in
section
-\begin_inset LatexCommand \ref{sub:Loop-Optimizations}
+\begin_inset LatexCommand ref
+reference "sub:Loop-Optimizations"
\end_inset
.
It is recommended that this option NOT be used, #pragma\InsetSpace ~
noinvariant
\end_inset
.
It is recommended that this option NOT be used, #pragma\InsetSpace ~
noinvariant
-\begin_inset LatexCommand \index{\#pragma noinvariant}
+\begin_inset LatexCommand index
+name "\\#pragma noinvariant"
-\begin_inset LatexCommand \index{-\/-noinduction}
+\begin_inset LatexCommand index
+name "-\\/-noinduction"
for more details.
It is recommended that this option is NOT used, #pragma\InsetSpace ~
noinduction
for more details.
It is recommended that this option is NOT used, #pragma\InsetSpace ~
noinduction
-\begin_inset LatexCommand \index{\#pragma noinduction}
+\begin_inset LatexCommand index
+name "\\#pragma noinduction"
-\begin_inset LatexCommand \index{-\/-nojtbound}
+\begin_inset LatexCommand index
+name "-\\/-nojtbound"
\series default
\size default
\series default
\size default
Will not generate boundary condition check when switch statements
Will not generate boundary condition check when switch statements
-\begin_inset LatexCommand \index{switch statement}
+\begin_inset LatexCommand index
+name "switch statement"
\end_inset
are implemented using jump-tables.
See section
\end_inset
are implemented using jump-tables.
See section
-\begin_inset LatexCommand \ref{sub:'switch'-Statements}
+\begin_inset LatexCommand ref
+reference "sub:'switch'-Statements"
Switch Statements for more details.
It is recommended that this option is NOT used, #pragma\InsetSpace ~
nojtbound
Switch Statements for more details.
It is recommended that this option is NOT used, #pragma\InsetSpace ~
nojtbound
-\begin_inset LatexCommand \index{\#pragma nojtbound}
+\begin_inset LatexCommand index
+name "\\#pragma nojtbound"
\end_inset
-noloopreverse
\end_inset
-noloopreverse
-\begin_inset LatexCommand \index{-\/-noloopreverse}
+\begin_inset LatexCommand index
+name "-\\/-noloopreverse"
\size default
Will not do loop reversal
\size default
Will not do loop reversal
-\begin_inset LatexCommand \index{Loop reversing}
+\begin_inset LatexCommand index
+name "Loop reversing"
nolabelopt
\series default
nolabelopt
\series default
-\begin_inset LatexCommand \index{-\/-nolabelopt }
+\begin_inset LatexCommand index
+name "-\\/-nolabelopt "
-\begin_inset LatexCommand \index{-\/-no-xinit-opt}
+\begin_inset LatexCommand index
+name "-\\/-no-xinit-opt"
\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
\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
-\begin_inset LatexCommand \index{Variable initialization}
+\begin_inset LatexCommand index
+name "Variable initialization"
-\begin_inset LatexCommand \index{-\/-nooverlay}
+\begin_inset LatexCommand index
+name "-\\/-nooverlay"
-\begin_inset LatexCommand \index{-\/-no-peep}
+\begin_inset LatexCommand index
+name "-\\/-no-peep"
-peep-file
\series default
-peep-file
\series default
-\begin_inset LatexCommand \index{-\/-peep-file}
+\begin_inset LatexCommand index
+name "-\\/-peep-file"
<filename> This option can be used to use additional rules to be used by
the peep hole optimizer.
See section
<filename> This option can be used to use additional rules to be used by
the peep hole optimizer.
See section
-\begin_inset LatexCommand \ref{sub:Peephole-Optimizer}
+\begin_inset LatexCommand ref
+reference "sub:Peephole-Optimizer"
-\begin_inset LatexCommand \index{-\/-peep-asm}
+\begin_inset LatexCommand index
+name "-\\/-peep-asm"
Pass the inline assembler code through the peep hole optimizer.
This can cause unexpected changes to inline assembler code, please go through
the peephole optimizer
Pass the inline assembler code through the peep hole optimizer.
This can cause unexpected changes to inline assembler code, please go through
the peephole optimizer
-\begin_inset LatexCommand \index{Peephole optimizer}
+\begin_inset LatexCommand index
+name "Peephole optimizer"
\end_inset
-opt-code-speed
\end_inset
-opt-code-speed
-\begin_inset LatexCommand \index{-\/-opt-code-speed}
+\begin_inset LatexCommand index
+name "-\\/-opt-code-speed"
\end_inset
-opt-code-size
\end_inset
-opt-code-size
-\begin_inset LatexCommand \index{-\/-opt-code-size}
+\begin_inset LatexCommand index
+name "-\\/-opt-code-size"
\begin_layout Subsection
Other Options
\begin_layout Subsection
Other Options
-\begin_inset LatexCommand \index{Options other}
+\begin_inset LatexCommand index
+name "Options other"
-\begin_inset LatexCommand \index{-\/-compile-only}
+\begin_inset LatexCommand index
+name "-\\/-compile-only"
-\begin_inset LatexCommand \index{-c -\/-compile-only}
+\begin_inset LatexCommand index
+name "-c -\\/-compile-only"
-\begin_inset LatexCommand \index{-\/-c1mode}
+\begin_inset LatexCommand index
+name "-\\/-c1mode"
-\begin_inset LatexCommand \index{-E}
+\begin_inset LatexCommand index
+name "-E"
\series bold
-o\InsetSpace ~
<path/file>
\series bold
-o\InsetSpace ~
<path/file>
-\begin_inset LatexCommand \index{-o <path/file>}
+\begin_inset LatexCommand index
+name "-o <path/file>"
-The output path where everything will be placed or the file name used for
+ The output path where everything will be placed or the file name used for
all generated output files.
If the parameter is a path, it must have a trailing slash (or backslash
for the Windows binaries) to be recognized as a path.
all generated output files.
If the parameter is a path, it must have a trailing slash (or backslash
for the Windows binaries) to be recognized as a path.
-
-\emph on
-
-\emph default
-Note for Windows users: if the path contains spaces, it should be surrounded
+ Note for Windows users: if the path contains spaces, it should be surrounded
by quotes.
The trailing backslash should be doubled in order to prevent escaping the
final quote, for example:
by quotes.
The trailing backslash should be doubled in order to prevent escaping the
final quote, for example:
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand index
+name "-\\/-stack-auto"
\end_inset
\series default
\size large
\end_inset
\series default
\size large
All functions in the source file will be compiled as
\emph on
reentrant
\emph default
All functions in the source file will be compiled as
\emph on
reentrant
\emph default
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
\end_inset
, i.e.
the parameters and local variables will be allocated on the stack
\end_inset
, i.e.
the parameters and local variables will be allocated on the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
-\begin_inset LatexCommand \ref{sec:Parameters-and-Local-Variables}
+\begin_inset LatexCommand ref
+reference "sec:Parameters-and-Local-Variables"
-\begin_inset LatexCommand \index{-\/-callee-saves}
+\begin_inset LatexCommand index
+name "-\\/-callee-saves"
-\begin_inset LatexCommand \label{lyx:--callee-saves-function1[,function2][,function3]...}
+\begin_inset LatexCommand label
+name "lyx:--callee-saves-function1[,function2][,function3]..."
code will be generated at the entry and exit (function prologue
\series bold
code will be generated at the entry and exit (function prologue
\series bold
-\begin_inset LatexCommand \index{function prologue}
+\begin_inset LatexCommand index
+name "function prologue"
and epilogue
\series bold
and epilogue
\series bold
-\begin_inset LatexCommand \index{function epilogue}
+\begin_inset LatexCommand index
+name "function epilogue"
-callee-saves option string.
Also see #pragma\InsetSpace ~
callee_saves
-callee-saves option string.
Also see #pragma\InsetSpace ~
callee_saves
-\begin_inset LatexCommand \index{\#pragma callee\_saves}
+\begin_inset LatexCommand index
+name "\\#pragma callee\\_saves"
-\begin_inset LatexCommand \vpageref{ite:callee_saves-function1[,function2[,function3...]]--}
+\begin_inset LatexCommand vpageref
+reference "ite:callee_saves-function1[,function2[,function3...]]--"
\end_inset
-all-callee-saves
\end_inset
-all-callee-saves
-\begin_inset LatexCommand \index{-\/-all-callee-saves}
+\begin_inset LatexCommand index
+name "-\\/-all-callee-saves"
-
-\series default
-Function of
-\series bold
-
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand index
+name "-\\/-debug"
When this option is used the compiler will generate debug information.
The debug information collected in a file with .cdb extension can be used
with the SDCDB.
For more information see documentation for SDCDB.
Another file with no extension contains debug information in AOMF or AOMF51
When this option is used the compiler will generate debug information.
The debug information collected in a file with .cdb extension can be used
with the SDCDB.
For more information see documentation for SDCDB.
Another file with no extension contains debug information in AOMF or AOMF51
-\begin_inset LatexCommand \index{AOMF, AOMF51}
+\begin_inset LatexCommand index
+name "AOMF, AOMF51"
-\begin_inset LatexCommand \index{-S}
+\begin_inset LatexCommand index
+name "-S"
Stop after the stage of compilation proper; do not assemble.
The output is an assembler code file for the input file specified.
\end_layout
Stop after the stage of compilation proper; do not assemble.
The output is an assembler code file for the input file specified.
\end_layout
\end_inset
-int-long-reent
\end_inset
-int-long-reent
-\begin_inset LatexCommand \index{-\/-int-long-reent}
+\begin_inset LatexCommand index
+name "-\\/-int-long-reent"
-\begin_inset LatexCommand \index{-\/-cyclomatic}
+\begin_inset LatexCommand index
+name "-\\/-cyclomatic"
This option will cause the compiler to generate an information message for
each function in the source file.
The message contains some
This option will cause the compiler to generate an information message for
each function in the source file.
The message contains some
graph of the function, and most importantly the
\emph on
cyclomatic complexity
graph of the function, and most importantly the
\emph on
cyclomatic complexity
-\begin_inset LatexCommand \index{Cyclomatic complexity}
+\begin_inset LatexCommand index
+name "Cyclomatic complexity"
-\begin_inset LatexCommand \index{-\/-float-reent}
+\begin_inset LatexCommand index
+name "-\\/-float-reent"
\end_inset
\series default
Floating point library is compiled as reentrant
\end_inset
\series default
Floating point library is compiled as reentrant
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
\end_inset
-funsigned-char
\end_inset
-funsigned-char
-\begin_inset LatexCommand \index{-\/-funsigned-char}
+\begin_inset LatexCommand index
+name "-\\/-funsigned-char"
\end_inset
\series default
\end_inset
\series default
- The default signedness for every type is
+ The default signedness for every type is
- In some embedded environments the default signedness of
+ In some embedded environments the default signedness of
\family default
.
To set the signess for characters to unsigned, use the option -
\family default
.
To set the signess for characters to unsigned, use the option -
-\begin_inset LatexCommand \index{-\/-main-return}
+\begin_inset LatexCommand index
+name "-\\/-main-return"
This option results in slightly smaller code and saves two bytes of stack
space.
The return from the 'main'
This option results in slightly smaller code and saves two bytes of stack
space.
The return from the 'main'
-\begin_inset LatexCommand \index{main return}
+\begin_inset LatexCommand index
+name "main return"
-\begin_inset LatexCommand \index{-\/-nostdinc}
+\begin_inset LatexCommand index
+name "-\\/-nostdinc"
-\begin_inset LatexCommand \index{-\/-nostdlib}
+\begin_inset LatexCommand index
+name "-\\/-nostdlib"
\end_inset
\series default
This will prevent the compiler from passing on the default library
\end_inset
\series default
This will prevent the compiler from passing on the default library
-\begin_inset LatexCommand \index{Libraries}
+\begin_inset LatexCommand index
+name "Libraries"
-\begin_inset LatexCommand \index{-\/-verbose}
+\begin_inset LatexCommand index
+name "-\\/-verbose"
-\begin_inset LatexCommand \index{-V}
+\begin_inset LatexCommand index
+name "-V"
\end_inset
-no-c-code-in-asm
\end_inset
-no-c-code-in-asm
-\begin_inset LatexCommand \index{-\/-no-c-code-in-asm}
+\begin_inset LatexCommand index
+name "-\\/-no-c-code-in-asm"
-\begin_inset LatexCommand \index{-\/-no-gen-comments}
+\begin_inset LatexCommand index
+name "-\\/-no-gen-comments"
\end_inset
-no-peep-comments
\end_inset
-no-peep-comments
-\begin_inset LatexCommand \index{-\/-no-peep-comments}
+\begin_inset LatexCommand index
+name "-\\/-no-peep-comments"
\end_inset
-i-code-in-asm
\end_inset
-i-code-in-asm
-\begin_inset LatexCommand \index{-\/-i-code-in-asm}
+\begin_inset LatexCommand index
+name "-\\/-i-code-in-asm"
\end_inset
-less-pedantic
\end_inset
-less-pedantic
-\begin_inset LatexCommand \index{pedantic}
+\begin_inset LatexCommand index
+name "pedantic"
-\begin_inset LatexCommand \index{-\/-less-pedantic}
+\begin_inset LatexCommand index
+name "-\\/-less-pedantic"
\end_inset
\series default
\end_inset
\series default
-\begin_inset LatexCommand \label{lyx:--less-pedantic}
+\begin_inset LatexCommand label
+name "lyx:--less-pedantic"
\end_inset
Disable some of the more pedantic warnings
\end_inset
Disable some of the more pedantic warnings
-\begin_inset LatexCommand \index{Warnings}
+\begin_inset LatexCommand index
+name "Warnings"
\end_inset
.
For more details, see the less_pedantic pragma
\end_inset
.
For more details, see the less_pedantic pragma
-\begin_inset LatexCommand \vpageref{ite:less_pedantic}
+\begin_inset LatexCommand vpageref
+reference "ite:less_pedantic"
-disable-warning\InsetSpace ~
<nnnn>
-disable-warning\InsetSpace ~
<nnnn>
-\begin_inset LatexCommand \index{-\/-disable-warning}
+\begin_inset LatexCommand index
+name "-\\/-disable-warning"
-\begin_inset LatexCommand \index{-\/-Werror}
+\begin_inset LatexCommand index
+name "-\\/-Werror"
\end_inset
-print-search-dirs
\end_inset
-print-search-dirs
-\begin_inset LatexCommand \index{-\/-print-search-dirs}
+\begin_inset LatexCommand index
+name "-\\/-print-search-dirs"
-\begin_inset LatexCommand \index{-\/-vc}
+\begin_inset LatexCommand index
+name "-\\/-vc"
\series default
Display errors and warnings using MSVC style, so you can use SDCC with
the visual studio IDE
\series default
Display errors and warnings using MSVC style, so you can use SDCC with
the visual studio IDE
-\begin_inset LatexCommand \index{IDE}
+\begin_inset LatexCommand index
+name "IDE"
\end_inset
.
With SDCC both offering a GCC-like (the default) and a MSVC-like
\end_inset
.
With SDCC both offering a GCC-like (the default) and a MSVC-like
-\begin_inset LatexCommand \index{MSVC output style}
+\begin_inset LatexCommand index
+name "MSVC output style"
-\begin_inset LatexCommand \index{-\/-use-stdout}
+\begin_inset LatexCommand index
+name "-\\/-use-stdout"
asmOption[,asmOption]
\series default
asmOption[,asmOption]
\series default
-\begin_inset LatexCommand \index{-Wa asmOption[,asmOption]}
+\begin_inset LatexCommand index
+name "-Wa asmOption[,asmOption]"
\end_inset
...
Pass the asmOption to the assembler
\end_inset
...
Pass the asmOption to the assembler
-\begin_inset LatexCommand \index{Options assembler}
+\begin_inset LatexCommand index
+name "Options assembler"
-\begin_inset LatexCommand \index{Assembler options}
+\begin_inset LatexCommand index
+name "Assembler options"
-\begin_inset LatexCommand \index{-\/-std-sdcc89}
+\begin_inset LatexCommand index
+name "-\\/-std-sdcc89"
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand index
+name "-\\/-std-c89"
-\begin_inset LatexCommand \index{-\/-std-sdcc99}
+\begin_inset LatexCommand index
+name "-\\/-std-sdcc99"
-\begin_inset LatexCommand \index{-\/-std-sdcc99}
+\begin_inset LatexCommand index
+name "-\\/-std-sdcc99"
-\begin_inset LatexCommand \index{-\/-codeseg <Value>}
+\begin_inset LatexCommand index
+name "-\\/-codeseg <Value>"
-\begin_inset LatexCommand \label{lyx:-codeseg}
+\begin_inset LatexCommand label
+name "lyx:-codeseg"
\end_inset
\InsetSpace ~
<Name> The name to be used for the code
\end_inset
\InsetSpace ~
<Name> The name to be used for the code
-\begin_inset LatexCommand \index{code}
+\begin_inset LatexCommand index
+name "code"
-constseg
\series default
-constseg
\series default
-\begin_inset LatexCommand \index{-\/-constseg <Value>}
+\begin_inset LatexCommand index
+name "-\\/-constseg <Value>"
\end_inset
\InsetSpace ~
<Name> The name to be used for the const
\end_inset
\InsetSpace ~
<Name> The name to be used for the const
-\begin_inset LatexCommand \index{const}
+\begin_inset LatexCommand index
+name "const"
\end_inset
-fdollars-in-identifiers
\end_inset
-fdollars-in-identifiers
-\begin_inset LatexCommand \index{-\/-fdollars-in-identifiers}
+\begin_inset LatexCommand index
+name "-\\/-fdollars-in-identifiers"
-more-pedantic
\series default
-more-pedantic
\series default
-\begin_inset LatexCommand \index{-\/-more-pedantic}
+\begin_inset LatexCommand index
+name "-\\/-more-pedantic"
-\begin_inset LatexCommand \index{pedantic}
+\begin_inset LatexCommand index
+name "pedantic"
\emph default
warnings you can use a separate tool dedicated to syntax checking like
splint
\emph default
warnings you can use a separate tool dedicated to syntax checking like
splint
-\begin_inset LatexCommand \label{lyx:more-pedantic-SPLINT}
+\begin_inset LatexCommand label
+name "lyx:more-pedantic-SPLINT"
-\begin_inset LatexCommand \index{lint (syntax checking tool)}
+\begin_inset LatexCommand index
+name "lint (syntax checking tool)"
-\begin_inset LatexCommand \url{http://www.splint.org}
+\begin_inset LatexCommand url
+target "http://www.splint.org"
-\begin_inset LatexCommand \index{splint (syntax checking tool)}
+\begin_inset LatexCommand index
+name "splint (syntax checking tool)"
\newline
Splint has an excellent on line manual at
\newline
Splint has an excellent on line manual at
-\begin_inset LatexCommand \url{http://www.splint.org/manual/}
+\begin_inset LatexCommand url
+target "http://www.splint.org/manual/"
-short-is-8bits
\series default
-short-is-8bits
\series default
-\begin_inset LatexCommand \index{-\/-short-is-8bits}
+\begin_inset LatexCommand index
+name "-\\/-short-is-8bits"
-\begin_inset LatexCommand \label{lyx:--short-is-8bits}
+\begin_inset LatexCommand label
+name "lyx:--short-is-8bits"
\end_inset
Treat short as 8-bit (for backward compatibility with older versions of
compiler - see section
\end_inset
Treat short as 8-bit (for backward compatibility with older versions of
compiler - see section
-\begin_inset LatexCommand \ref{sec:Compatibility-with-previous}
+\begin_inset LatexCommand ref
+reference "sec:Compatibility-with-previous"
\begin_layout Subsection
Intermediate Dump Options
\begin_layout Subsection
Intermediate Dump Options
-\begin_inset LatexCommand \label{sub:Intermediate-Dump-Options}
+\begin_inset LatexCommand label
+name "sub:Intermediate-Dump-Options"
-\begin_inset LatexCommand \index{Options intermediate dump}
+\begin_inset LatexCommand index
+name "Options intermediate dump"
-\begin_inset LatexCommand \index{Intermediate dump options}
+\begin_inset LatexCommand index
+name "Intermediate dump options"
The following options are provided for the purpose of retargetting and debugging
the compiler.
They provide a means to dump the intermediate code (iCode
The following options are provided for the purpose of retargetting and debugging
the compiler.
They provide a means to dump the intermediate code (iCode
-\begin_inset LatexCommand \index{iCode}
+\begin_inset LatexCommand index
+name "iCode"
\end_inset
) generated by the compiler in human readable form at various stages of
the compilation process.
More on iCodes see chapter
\end_inset
) generated by the compiler in human readable form at various stages of
the compilation process.
More on iCodes see chapter
-\begin_inset LatexCommand \ref{sub:The-anatomy-of}
+\begin_inset LatexCommand ref
+reference "sub:The-anatomy-of"
-\begin_inset LatexCommand \index{-\/-dumpraw}
+\begin_inset LatexCommand index
+name "-\\/-dumpraw"
just after the intermediate code has been generated for a function, i.e.
before any optimizations are done.
The basic blocks
just after the intermediate code has been generated for a function, i.e.
before any optimizations are done.
The basic blocks
-\begin_inset LatexCommand \index{Basic blocks}
+\begin_inset LatexCommand index
+name "Basic blocks"
-\begin_inset LatexCommand \index{-\/-dumpgcse}
+\begin_inset LatexCommand index
+name "-\\/-dumpgcse"
\end_inset
\series default
Will create a dump of iCodes, after global subexpression elimination
\end_inset
\series default
Will create a dump of iCodes, after global subexpression elimination
-\begin_inset LatexCommand \index{Global subexpression elimination}
+\begin_inset LatexCommand index
+name "Global subexpression elimination"
-\begin_inset LatexCommand \index{-\/-dumpdeadcode}
+\begin_inset LatexCommand index
+name "-\\/-dumpdeadcode"
\end_inset
\series default
Will create a dump of iCodes, after deadcode elimination
\end_inset
\series default
Will create a dump of iCodes, after deadcode elimination
-\begin_inset LatexCommand \index{Dead-code elimination}
+\begin_inset LatexCommand index
+name "Dead-code elimination"
-\begin_inset LatexCommand \index{-\/-dumploop}
+\begin_inset LatexCommand index
+name "-\\/-dumploop"
\size default
Will create a dump of iCodes, after loop optimizations
\size default
Will create a dump of iCodes, after loop optimizations
-\begin_inset LatexCommand \index{Loop optimization}
+\begin_inset LatexCommand index
+name "Loop optimization"
-\begin_inset LatexCommand \index{-\/-dumprange}
+\begin_inset LatexCommand index
+name "-\\/-dumprange"
\size default
Will create a dump of iCodes, after live range analysis
\size default
Will create a dump of iCodes, after live range analysis
-\begin_inset LatexCommand \index{Live range analysis}
+\begin_inset LatexCommand index
+name "Live range analysis"
-\begin_inset LatexCommand \index{-\/-dumlrange}
+\begin_inset LatexCommand index
+name "-\\/-dumlrange"
\end_inset
\series default
Will dump the life ranges
\end_inset
\series default
Will dump the life ranges
-\begin_inset LatexCommand \index{Live range analysis}
+\begin_inset LatexCommand index
+name "Live range analysis"
\end_inset
-dumpregassign
\end_inset
-dumpregassign
-\begin_inset LatexCommand \index{-\/-dumpregassign}
+\begin_inset LatexCommand index
+name "-\\/-dumpregassign"
Will create a dump of iCodes, after register assignment
Will create a dump of iCodes, after register assignment
-\begin_inset LatexCommand \index{Register assignment}
+\begin_inset LatexCommand index
+name "Register assignment"
-\begin_inset LatexCommand \index{-\/-dumplrange}
+\begin_inset LatexCommand index
+name "-\\/-dumplrange"
-\begin_inset LatexCommand \index{-\/-dumpall}
+\begin_inset LatexCommand index
+name "-\\/-dumpall"
\series default
\size default
\series default
\size default
Will cause all the above mentioned dumps to be created.
\end_layout
Will cause all the above mentioned dumps to be created.
\end_layout
-
\series default
use-stdout
-
\series default
use-stdout
-\begin_inset LatexCommand \index{-\/-use-stdout}
+\begin_inset LatexCommand index
+name "-\\/-use-stdout"
-\begin_inset LatexCommand \index{-\/-vc}
+\begin_inset LatexCommand index
+name "-\\/-vc"
\begin_layout Section
Environment variables
\begin_layout Section
Environment variables
-\begin_inset LatexCommand \index{Environment variables}
+\begin_inset LatexCommand index
+name "Environment variables"
\series bold
SDCC_LEAVE_SIGNALS
\series bold
SDCC_LEAVE_SIGNALS
-\begin_inset LatexCommand \index{SDCC\_LEAVE\_SIGNALS}
+\begin_inset LatexCommand index
+name "SDCC\\_LEAVE\\_SIGNALS"
\end_inset
\series default
SDCC installs a signal handler
\end_inset
\series default
SDCC installs a signal handler
-\begin_inset LatexCommand \index{signal handler}
+\begin_inset LatexCommand index
+name "signal handler"
TMP,\InsetSpace ~
TEMP,\InsetSpace ~
TMPDIR
TMP,\InsetSpace ~
TEMP,\InsetSpace ~
TMPDIR
-\begin_inset LatexCommand \index{TMP, TEMP, TMPDIR}
+\begin_inset LatexCommand index
+name "TMP, TEMP, TMPDIR"
-\begin_inset LatexCommand \index{SDCC\_HOME}
+\begin_inset LatexCommand index
+name "SDCC\\_HOME"
\end_inset
\series default
Path, see section
\end_inset
\series default
Path, see section
-\begin_inset LatexCommand \ref{sub:Install-paths}
+\begin_inset LatexCommand ref
+reference "sub:Install-paths"
\series bold
SDCC_INCLUDE
\series bold
SDCC_INCLUDE
-\begin_inset LatexCommand \index{SDCC\_INCLUDE}
+\begin_inset LatexCommand index
+name "SDCC\\_INCLUDE"
\end_inset
\series default
Path, see section
\end_inset
\series default
Path, see section
-\begin_inset LatexCommand \ref{sub:Search-Paths}
+\begin_inset LatexCommand ref
+reference "sub:Search-Paths"
-\begin_inset LatexCommand \index{SDCC\_LIB}
+\begin_inset LatexCommand index
+name "SDCC\\_LIB"
\end_inset
\series default
Path, see section
\end_inset
\series default
Path, see section
-\begin_inset LatexCommand \ref{sub:Search-Paths}
+\begin_inset LatexCommand ref
+reference "sub:Search-Paths"
\begin_layout Subsection
MCS51/DS390 Storage Class
\begin_layout Subsection
MCS51/DS390 Storage Class
-\begin_inset LatexCommand \index{Storage class}
+\begin_inset LatexCommand index
+name "Storage class"
\begin_layout Subsubsection
data
\begin_layout Subsubsection
data
-\begin_inset LatexCommand \index{data (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "data (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{\_\_data (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_data (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{near (storage class)}
+\begin_inset LatexCommand index
+name "near (storage class)"
-\begin_inset LatexCommand \index{\_\_near (storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_near (storage class)"
\begin_layout Subsubsection
xdata
\begin_layout Subsubsection
xdata
-\begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "xdata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_xdata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{far (storage class)}
+\begin_inset LatexCommand index
+name "far (storage class)"
-\begin_inset LatexCommand \index{\_\_far (storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_far (storage class)"
\begin_layout Subsubsection
idata
\begin_layout Subsubsection
idata
-\begin_inset LatexCommand \index{idata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "idata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{\_\_idata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_idata (mcs51, ds390 storage class)"
The original 8051 had 128 byte idata memory, nowadays most devices have
256 byte idata memory.
The stack
The original 8051 had 128 byte idata memory, nowadays most devices have
256 byte idata memory.
The stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
\begin_layout Subsubsection
pdata
\begin_layout Subsubsection
pdata
-\begin_inset LatexCommand \index{pdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "pdata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{\_\_pdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_pdata (mcs51, ds390 storage class)"
The following example writes 0x01 to the pdata variable.
Please note, pdata access physically accesses xdata memory.
The high byte of the address is determined by port P2
The following example writes 0x01 to the pdata variable.
Please note, pdata access physically accesses xdata memory.
The high byte of the address is determined by port P2
-\begin_inset LatexCommand \index{P2 (mcs51 sfr)}
+\begin_inset LatexCommand index
+name "P2 (mcs51 sfr)"
\end_inset
(or in case of some 8051 variants by a separate Special Function Register,
see section
\end_inset
(or in case of some 8051 variants by a separate Special Function Register,
see section
-\begin_inset LatexCommand \ref{sub:MCS51-variants}
+\begin_inset LatexCommand ref
+reference "sub:MCS51-variants"
-\begin_inset LatexCommand \index{-\/-xstack}
+\begin_inset LatexCommand index
+name "-\\/-xstack"
\begin_layout Subsubsection
code
\begin_layout Subsubsection
code
-\begin_inset LatexCommand \index{code}
+\begin_inset LatexCommand index
+name "code"
-\begin_inset LatexCommand \index{\_\_code}
+\begin_inset LatexCommand index
+name "\\_\\_code"
\begin_layout Subsubsection
bit
\begin_layout Subsubsection
bit
-\begin_inset LatexCommand \index{bit}
+\begin_inset LatexCommand index
+name "bit"
-\begin_inset LatexCommand \index{\_\_bit}
+\begin_inset LatexCommand index
+name "\\_\\_bit"
\newline
Apart from this 8051 specific storage class most architectures support
ANSI-C bitfields
\newline
Apart from this 8051 specific storage class most architectures support
ANSI-C bitfields
-\begin_inset LatexCommand \index{bitfields}
+\begin_inset LatexCommand index
+name "bitfields"
\begin_layout Subsubsection
sfr
\begin_layout Subsubsection
sfr
-\begin_inset LatexCommand \index{sfr}
+\begin_inset LatexCommand index
+name "sfr"
-\begin_inset LatexCommand \index{\_\_sfr}
+\begin_inset LatexCommand index
+name "\\_\\_sfr"
-\begin_inset LatexCommand \index{sfr16}
+\begin_inset LatexCommand index
+name "sfr16"
-\begin_inset LatexCommand \index{\_\_sfr16}
+\begin_inset LatexCommand index
+name "\\_\\_sfr16"
-\begin_inset LatexCommand \index{sfr32}
+\begin_inset LatexCommand index
+name "sfr32"
-\begin_inset LatexCommand \index{\_\_sfr32}
+\begin_inset LatexCommand index
+name "\\_\\_sfr32"
-\begin_inset LatexCommand \index{\_\_sbit}
+\begin_inset LatexCommand index
+name "\\_\\_sbit"
-\begin_inset LatexCommand \index{sbit}
+\begin_inset LatexCommand index
+name "sbit"
\begin_layout Standard
Like the bit keyword,
\emph on
\begin_layout Standard
Like the bit keyword,
\emph on
-sfr / sfr16 / sfr32 / sbit
+sfr / sfr16 / sfr32 / sbit
-signify both a data-type and storage class, they are used to describe the
+ signify both a data-type and storage class, they are used to describe the
\family typewriter
__sfr __at
\family typewriter
__sfr __at
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand index
+name "\\_\\_at"
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand index
+name "\\_\\_at"
\end_inset
(0xd7) CY;\InsetSpace ~
/* CY (Carry Flag
\end_inset
(0xd7) CY;\InsetSpace ~
/* CY (Carry Flag
-\begin_inset LatexCommand \index{Flags}
+\begin_inset LatexCommand index
+name "Flags"
-\begin_inset LatexCommand \index{Carry flag}
+\begin_inset LatexCommand index
+name "Carry flag"
\begin_layout Standard
Special function registers which are located on an address dividable by
\begin_layout Standard
Special function registers which are located on an address dividable by
- 8 are bit-addressable, an
+ 8 are bit-addressable, an
\emph default
addresses a specific bit within these sfr.
\newline
\emph default
addresses a specific bit within these sfr.
\newline
then the sfr / sfr16 / sfr32 / sbit Storage Class extensions will most
likely be
\emph on
then the sfr / sfr16 / sfr32 / sbit Storage Class extensions will most
likely be
\emph on
Specifically the syntax
\family typewriter
\InsetSpace ~
Specifically the syntax
\family typewriter
\InsetSpace ~
Nevertheless it is possible to write header files
Nevertheless it is possible to write header files
-\begin_inset LatexCommand \index{Header files}
+\begin_inset LatexCommand index
+name "Header files"
-\begin_inset LatexCommand \index{Include files}
+\begin_inset LatexCommand index
+name "Include files"
\end_inset
which can be shared among different compilers (see section
\end_inset
which can be shared among different compilers (see section
-\begin_inset LatexCommand \ref{sec:Porting-code-to-other-compilers}
+\begin_inset LatexCommand ref
+reference "sec:Porting-code-to-other-compilers"
\begin_layout Subsubsection
Pointers
\begin_layout Subsubsection
Pointers
-\begin_inset LatexCommand \index{Pointer}
+\begin_inset LatexCommand index
+name "Pointer"
\begin_layout Standard
SDCC allows (via language extensions) pointers to explicitly point to any
of the memory spaces
\begin_layout Standard
SDCC allows (via language extensions) pointers to explicitly point to any
of the memory spaces
-\begin_inset LatexCommand \index{Memory model}
+\begin_inset LatexCommand index
+name "Memory model"
\newline
/*
the following is a function pointer
\newline
/*
the following is a function pointer
-\begin_inset LatexCommand \index{function pointer}
+\begin_inset LatexCommand index
+name "function pointer"
\emph default
pointers.
These are useful for developing reusable library
\emph default
pointers.
These are useful for developing reusable library
-\begin_inset LatexCommand \index{Libraries}
+\begin_inset LatexCommand index
+name "Libraries"
\end_inset
routines.
Explicitly specifying the pointer
\end_inset
routines.
Explicitly specifying the pointer
-\begin_inset LatexCommand \index{pointer}
+\begin_inset LatexCommand index
+name "pointer"
\begin_layout Subsubsection
Notes on MCS51 memory
\begin_layout Subsubsection
Notes on MCS51 memory
-\begin_inset LatexCommand \index{MCS51 memory}
+\begin_inset LatexCommand index
+name "MCS51 memory"
\newline
- Bytes 20-2F - 16 bytes to hold
128 bit
\newline
- Bytes 20-2F - 16 bytes to hold
128 bit
-\begin_inset LatexCommand \index{bit}
+\begin_inset LatexCommand index
+name "bit"
-\begin_inset LatexCommand \index{idata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "idata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{\_\_idata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_idata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "xdata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_xdata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{data (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "data (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{\_\_data (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_data (mcs51, ds390 storage class)"
memory has to be activated before using it (you can probably find this
information on the datasheet of the microcontroller your are using, see
also section
memory has to be activated before using it (you can probably find this
information on the datasheet of the microcontroller your are using, see
also section
-\begin_inset LatexCommand \ref{sub:Startup-Code}
+\begin_inset LatexCommand ref
+reference "sub:Startup-Code"
\begin_layout Standard
Normally SDCC will only use the first bank
\begin_layout Standard
Normally SDCC will only use the first bank
-\begin_inset LatexCommand \index{register bank (mcs51, ds390)}
+\begin_inset LatexCommand index
+name "register bank (mcs51, ds390)"
-\begin_inset LatexCommand \index{using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand index
+name "using (mcs51, ds390 register bank)"
-\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand index
+name "\\_\\_using (mcs51, ds390 register bank)"
\end_inset
\emph default
) should be used for example in interrupt
\end_inset
\emph default
) should be used for example in interrupt
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
-\begin_inset LatexCommand \index{\_\_interrupt}
+\begin_inset LatexCommand index
+name "\\_\\_interrupt"
variables, it will position the base of the internal stack at address 20
(0x14).
This implies that as the stack
variables, it will position the base of the internal stack at address 20
(0x14).
This implies that as the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
-\begin_inset LatexCommand \index{-\/-data-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-data-loc <Value>"
-\begin_inset LatexCommand \index{-\/-iram-size <Value>}
+\begin_inset LatexCommand index
+name "-\\/-iram-size <Value>"
-\begin_inset LatexCommand \index{-\/-stack-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-stack-loc <Value>"
-\begin_inset LatexCommand \index{-\/-xdata-loc<Value>}
+\begin_inset LatexCommand index
+name "-\\/-xdata-loc<Value>"
-\begin_inset LatexCommand \index{-\/-xram-size <Value>}
+\begin_inset LatexCommand index
+name "-\\/-xram-size <Value>"
-\begin_inset LatexCommand \index{-\/-code-loc <Value>}
+\begin_inset LatexCommand index
+name "-\\/-code-loc <Value>"
-\begin_inset LatexCommand \index{-\/-code-size <Value>}
+\begin_inset LatexCommand index
+name "-\\/-code-size <Value>"
\begin_layout Standard
The linker generates two files with memory allocation information.
The first, with extension .map
\begin_layout Standard
The linker generates two files with memory allocation information.
The first, with extension .map
-\begin_inset LatexCommand \index{<file>.map}
+\begin_inset LatexCommand index
+name "<file>.map"
\end_inset
shows all the variables and segments.
The second with extension .mem
\end_inset
shows all the variables and segments.
The second with extension .mem
-\begin_inset LatexCommand \index{<file>.mem}
+\begin_inset LatexCommand index
+name "<file>.mem"
\begin_layout Subsection
Z80/Z180 Storage Class
\begin_layout Subsection
Z80/Z180 Storage Class
-\begin_inset LatexCommand \index{Z80!Storage class}
+\begin_inset LatexCommand index
+name "Z80!Storage class"
\begin_layout Subsubsection
sfr
\begin_layout Subsubsection
sfr
-\begin_inset LatexCommand \index{sfr}
+\begin_inset LatexCommand index
+name "sfr"
-\begin_inset LatexCommand \index{\_\_sfr}
+\begin_inset LatexCommand index
+name "\\_\\_sfr"
\begin_layout Standard
The Z80
\begin_layout Standard
The Z80
-\begin_inset LatexCommand \index{Z80}
+\begin_inset LatexCommand index
+name "Z80"
\emph default
utput memory.
I/O memory
\emph default
utput memory.
I/O memory
-\begin_inset LatexCommand \index{I/O memory (Z80, Z180)}
+\begin_inset LatexCommand index
+name "I/O memory (Z80, Z180)"
-\begin_inset LatexCommand \index{Z80!I/O memory}
+\begin_inset LatexCommand index
+name "Z80!I/O memory"
-\begin_inset LatexCommand \index{Z180!I/O memory}
+\begin_inset LatexCommand index
+name "Z180!I/O memory"
\begin_layout Subsubsection
banked sfr
\begin_layout Subsubsection
banked sfr
-\begin_inset LatexCommand \index{sfr}
+\begin_inset LatexCommand index
+name "sfr"
-\begin_inset LatexCommand \index{\_\_sfr}
+\begin_inset LatexCommand index
+name "\\_\\_sfr"
\family typewriter
sfr banked at
\family typewriter
sfr banked at
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand index
+name "\\_\\_at"
\begin_layout Subsubsection
sfr
\begin_layout Subsubsection
sfr
-\begin_inset LatexCommand \index{sfr}
+\begin_inset LatexCommand index
+name "sfr"
-\begin_inset LatexCommand \index{\_\_sfr}
+\begin_inset LatexCommand index
+name "\\_\\_sfr"
\end_inset
(in0/out0 to 8 bit addresses on Z180
\end_inset
(in0/out0 to 8 bit addresses on Z180
-\begin_inset LatexCommand \index{Z180}
+\begin_inset LatexCommand index
+name "Z180"
-\begin_inset LatexCommand \index{HD64180 (see Z180)}
+\begin_inset LatexCommand index
+name "HD64180 (see Z180)"
-\begin_inset LatexCommand \index{Z180!Options!-\/-portmode}
+\begin_inset LatexCommand index
+name "Z180!Options!-\\/-portmode"
\end_inset
=180 (80) and a compiler #pragma\InsetSpace ~
portmode
\end_inset
=180 (80) and a compiler #pragma\InsetSpace ~
portmode
-\begin_inset LatexCommand \index{Z180!Pragmas!\#pragma portmode}
+\begin_inset LatexCommand index
+name "Z180!Pragmas!\\#pragma portmode"
\begin_layout Subsection
HC08 Storage Class
\begin_layout Subsection
HC08 Storage Class
-\begin_inset LatexCommand \index{HC08!Storage class}
+\begin_inset LatexCommand index
+name "HC08!Storage class"
\begin_layout Subsubsection
data
\begin_layout Subsubsection
data
-\begin_inset LatexCommand \index{data (hc08 storage class)}
+\begin_inset LatexCommand index
+name "data (hc08 storage class)"
-\begin_inset LatexCommand \index{\_\_data (hc08 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_data (hc08 storage class)"
The data storage class declares a variable that resides in the first 256
bytes of memory (the direct page).
The HC08
The data storage class declares a variable that resides in the first 256
bytes of memory (the direct page).
The HC08
-\begin_inset LatexCommand \index{HC08}
+\begin_inset LatexCommand index
+name "HC08"
\begin_layout Subsubsection
xdata
\begin_layout Subsubsection
xdata
-\begin_inset LatexCommand \index{xdata (hc08 storage class)}
+\begin_inset LatexCommand index
+name "xdata (hc08 storage class)"
-\begin_inset LatexCommand \index{\_\_xdata (hc08 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_xdata (hc08 storage class)"
\begin_layout Section
Other SDCC language extensions
\begin_layout Section
Other SDCC language extensions
-\begin_inset LatexCommand \index{Other SDCC language extensions}
+\begin_inset LatexCommand index
+name "Other SDCC language extensions"
\begin_layout Section
Absolute Addressing
\begin_layout Section
Absolute Addressing
-\begin_inset LatexCommand \index{Absolute addressing}
+\begin_inset LatexCommand index
+name "Absolute addressing"
Data items can be assigned an absolute address with the
\emph on
at
Data items can be assigned an absolute address with the
\emph on
at
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand index
+name "\\_\\_at"
-\begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "xdata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{\_\_xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_xdata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand index
+name "\\_\\_at"
Thus it is left to the programmer to make sure there are no overlaps with
other variables that are declared without the absolute address.
The assembler listing file (.lst
Thus it is left to the programmer to make sure there are no overlaps with
other variables that are declared without the absolute address.
The assembler listing file (.lst
-\begin_inset LatexCommand \index{<file>.lst}
+\begin_inset LatexCommand index
+name "<file>.lst"
\end_inset
) and the linker output files (.rst
\end_inset
) and the linker output files (.rst
-\begin_inset LatexCommand \index{<file>.rst}
+\begin_inset LatexCommand index
+name "<file>.rst"
-\begin_inset LatexCommand \index{<file>.map}
+\begin_inset LatexCommand index
+name "<file>.map"
\begin_layout Standard
If however you provide an initializer
\begin_layout Standard
If however you provide an initializer
-\begin_inset LatexCommand \index{Variable initialization}
+\begin_inset LatexCommand index
+name "Variable initialization"
\family typewriter
volatile
\family typewriter
volatile
-\begin_inset LatexCommand \index{volatile}
+\begin_inset LatexCommand index
+name "volatile"
-\begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "xdata (mcs51, ds390 storage class)"
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
\family typewriter
\size footnotesize
\family typewriter
\size footnotesize
-\begin_inset LatexCommand \index{Aligned array}
+\begin_inset LatexCommand index
+name "Aligned array"
\family default
\size default
starts at a block (256 byte) boundary
\family default
\size default
starts at a block (256 byte) boundary
-\begin_inset LatexCommand \index{block boundary}
+\begin_inset LatexCommand index
+name "block boundary"
-\begin_inset LatexCommand \ref{sub:A-Step-by Assembler Introduction}
+\begin_inset LatexCommand ref
+reference "sub:A-Step-by Assembler Introduction"
-\begin_inset LatexCommand \index{bit}
+\begin_inset LatexCommand index
+name "bit"
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
\family typewriter
extern volatile
\family typewriter
extern volatile
-\begin_inset LatexCommand \index{volatile}
+\begin_inset LatexCommand index
+name "volatile"
\family typewriter
__bit __at
\family typewriter
__bit __at
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand index
+name "\\_\\_at"
I/O port 1, bit 1 */
\newline
__bit
I/O port 1, bit 1 */
\newline
__bit
-\begin_inset LatexCommand \index{bit}
+\begin_inset LatexCommand index
+name "bit"
\begin_layout Section
Parameters
\begin_layout Section
Parameters
-\begin_inset LatexCommand \index{Parameters}
+\begin_inset LatexCommand index
+name "Parameters"
-\begin_inset LatexCommand \index{function parameter}
+\begin_inset LatexCommand index
+name "function parameter"
\end_inset
& Local Variables
\end_inset
& Local Variables
-\begin_inset LatexCommand \index{local variables}
+\begin_inset LatexCommand index
+name "local variables"
-\begin_inset LatexCommand \label{sec:Parameters-and-Local-Variables}
+\begin_inset LatexCommand label
+name "sec:Parameters-and-Local-Variables"
This in fact makes them similar to
\emph on
static
This in fact makes them similar to
\emph on
static
-\begin_inset LatexCommand \index{static}
+\begin_inset LatexCommand index
+name "static"
\end_inset
\emph default
so by default functions are non-reentrant
\end_inset
\emph default
so by default functions are non-reentrant
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
\newline
They can be placed on the stack
\newline
They can be placed on the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand index
+name "-\\/-stack-auto"
-\begin_inset LatexCommand \index{\#pragma stackauto}
+\begin_inset LatexCommand index
+name "\\#pragma stackauto"
\end_inset
or by using the
\emph on
reentrant
\end_inset
or by using the
\emph on
reentrant
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
\begin_layout Standard
Since stack space on 8051 is limited, the
\emph on
\begin_layout Standard
Since stack space on 8051 is limited, the
\emph on
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
does not
\emph default
mean that the function is register bank
does not
\emph default
mean that the function is register bank
-\begin_inset LatexCommand \index{register bank (mcs51, ds390)}
+\begin_inset LatexCommand index
+name "register bank (mcs51, ds390)"
-\begin_inset LatexCommand \index{local variables}
+\begin_inset LatexCommand index
+name "local variables"
\end_inset
can be assigned storage classes and absolute
\end_inset
can be assigned storage classes and absolute
-\begin_inset LatexCommand \index{Absolute addressing}
+\begin_inset LatexCommand index
+name "Absolute addressing"
\InsetSpace ~
\InsetSpace ~
__data __at
\InsetSpace ~
\InsetSpace ~
__data __at
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
\emph on
bvar
\emph default
\emph on
bvar
\emph default
- in bit addressable space and
+ in bit addressable space and
\emph default
in internal ram.
When compiled with
\emph default
in internal ram.
When compiled with
\begin_layout Standard
Parameters
\begin_layout Standard
Parameters
-\begin_inset LatexCommand \index{function parameter}
+\begin_inset LatexCommand index
+name "function parameter"
\end_inset
however are not allowed any storage class
\end_inset
however are not allowed any storage class
-\begin_inset LatexCommand \index{Storage class}
+\begin_inset LatexCommand index
+name "Storage class"
non-static local bit variables are supported.
Efficient use is limited to 8 semi-bitregisters in bit space.
They are pushed and popped to stack
non-static local bit variables are supported.
Efficient use is limited to 8 semi-bitregisters in bit space.
They are pushed and popped to stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
\begin_layout Section
Overlaying
\begin_layout Section
Overlaying
-\begin_inset LatexCommand \label{sub:Overlaying}
+\begin_inset LatexCommand label
+name "sub:Overlaying"
-\begin_inset LatexCommand \index{Overlaying}
+\begin_inset LatexCommand index
+name "Overlaying"
\begin_layout Standard
For non-reentrant
\begin_layout Standard
For non-reentrant
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
\end_inset
functions SDCC will try to reduce internal ram space usage by overlaying
parameters and local variables of a function (if possible).
Parameters and local variables
\end_inset
functions SDCC will try to reduce internal ram space usage by overlaying
parameters and local variables of a function (if possible).
Parameters and local variables
-\begin_inset LatexCommand \index{local variables}
+\begin_inset LatexCommand index
+name "local variables"
\emph on
no other function calls and the function is non-reentrant and the memory
model
\emph on
no other function calls and the function is non-reentrant and the memory
model
-\begin_inset LatexCommand \index{Memory model}
+\begin_inset LatexCommand index
+name "Memory model"
\emph default
If an explicit storage class
\emph default
If an explicit storage class
-\begin_inset LatexCommand \index{Storage class}
+\begin_inset LatexCommand index
+name "Storage class"
should be preceded by a #pragma\InsetSpace ~
nooverlay
should be preceded by a #pragma\InsetSpace ~
nooverlay
-\begin_inset LatexCommand \index{\#pragma nooverlay}
+\begin_inset LatexCommand index
+name "\\#pragma nooverlay"
\begin_layout Standard
Parameters and local variables of functions that contain 16 or 32 bit multiplica
tion
\begin_layout Standard
Parameters and local variables of functions that contain 16 or 32 bit multiplica
tion
-\begin_inset LatexCommand \index{Multiplication}
+\begin_inset LatexCommand index
+name "Multiplication"
-\begin_inset LatexCommand \index{Division}
+\begin_inset LatexCommand index
+name "Division"
#pragma save
\newline
#pragma nooverlay
#pragma save
\newline
#pragma nooverlay
-\begin_inset LatexCommand \index{\#pragma nooverlay}
+\begin_inset LatexCommand index
+name "\\#pragma nooverlay"
\newline
void
some_isr () __interrupt
\newline
void
some_isr () __interrupt
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
\begin_layout Section
Interrupt Service Routines
\begin_layout Section
Interrupt Service Routines
-\begin_inset LatexCommand \label{sub:Interrupt-Service-Routines}
+\begin_inset LatexCommand label
+name "sub:Interrupt-Service-Routines"
The optional number following the
\emph on
interrupt
The optional number following the
\emph on
interrupt
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
-\begin_inset LatexCommand \index{\_\_interrupt}
+\begin_inset LatexCommand index
+name "\\_\\_interrupt"
keyword is the interrupt number this routine will service.
When present, the compiler will insert a call to this routine in the interrupt
vector table
keyword is the interrupt number this routine will service.
When present, the compiler will insert a call to this routine in the interrupt
vector table
-\begin_inset LatexCommand \index{interrupt vector table}
+\begin_inset LatexCommand index
+name "interrupt vector table"
The optional (8051 specific) keyword
\emph on
using
The optional (8051 specific) keyword
\emph on
using
-\begin_inset LatexCommand \index{using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand index
+name "using (mcs51, ds390 register bank)"
-\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand index
+name "\\_\\_using (mcs51, ds390 register bank)"
\end_layout
\begin_layout Subsubsection
\end_layout
\begin_layout Subsubsection
-\begin_inset LatexCommand \label{sub:Common-interrupt-pitfall-volatile}
+\begin_inset LatexCommand label
+name "sub:Common-interrupt-pitfall-volatile"
-\begin_inset LatexCommand \index{volatile}
+\begin_inset LatexCommand index
+name "volatile"
-\begin_inset LatexCommand \url{http://en.wikipedia.org/wiki/Volatile_variable}
+\begin_inset LatexCommand url
+target "http://en.wikipedia.org/wiki/Volatile_variable"
\end_layout
\begin_layout Subsubsection
\end_layout
\begin_layout Subsubsection
-\begin_inset LatexCommand \label{sub:Common-interrupt-pitfall-non-atomic}
+\begin_inset LatexCommand label
+name "sub:Common-interrupt-pitfall-non-atomic"
If the access to these variables is not
\emph on
atomic
If the access to these variables is not
\emph on
atomic
-\begin_inset LatexCommand \index{atomic}
+\begin_inset LatexCommand index
+name "atomic"
\end_layout
\begin_layout Subsubsection
\end_layout
\begin_layout Subsubsection
-\begin_inset LatexCommand \label{sub:Common-interrupt-pitfall-stack-overflow}
+\begin_inset LatexCommand label
+name "sub:Common-interrupt-pitfall-stack-overflow"
\begin_layout Standard
The return address and the registers used in the interrupt service routine
are saved on the stack
\begin_layout Standard
The return address and the registers used in the interrupt service routine
are saved on the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
stack overflow
\emph default
stack overflow
\emph default
-\begin_inset LatexCommand \index{stack overflow}
+\begin_inset LatexCommand index
+name "stack overflow"
\end_layout
\begin_layout Subsubsection
\end_layout
\begin_layout Subsubsection
-\begin_inset LatexCommand \label{sub:Common-interrupt-pitfall-non-reentrant}
+\begin_inset LatexCommand label
+name "sub:Common-interrupt-pitfall-non-reentrant"
\begin_layout Standard
A special note here, int (16 bit) and long (32 bit) integer division
\begin_layout Standard
A special note here, int (16 bit) and long (32 bit) integer division
-\begin_inset LatexCommand \index{Division}
+\begin_inset LatexCommand index
+name "Division"
\end_inset
, multiplication
\end_inset
, multiplication
-\begin_inset LatexCommand \index{Multiplication}
+\begin_inset LatexCommand index
+name "Multiplication"
-\begin_inset LatexCommand \index{Modulus}
+\begin_inset LatexCommand index
+name "Modulus"
\end_inset
and floating-point
\end_inset
and floating-point
-\begin_inset LatexCommand \index{Floating point support}
+\begin_inset LatexCommand index
+name "Floating point support"
\end_inset
operations are implemented using external support routines.
If an interrupt service routine needs to do any of these operations then
the support routines (as mentioned in a following section) will have to
\end_inset
operations are implemented using external support routines.
If an interrupt service routine needs to do any of these operations then
the support routines (as mentioned in a following section) will have to
- be recompiled using the
+ be recompiled using the
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand index
+name "-\\/-stack-auto"
-int-long-reent
\emph default
-int-long-reent
\emph default
-\begin_inset LatexCommand \index{-\/-int-long-reent}
+\begin_inset LatexCommand index
+name "-\\/-int-long-reent"
\newline
Note, the type promotion
\newline
Note, the type promotion
-\begin_inset LatexCommand \index{type promotion}
+\begin_inset LatexCommand index
+name "type promotion"
See f.e.
the cast
\family typewriter
See f.e.
the cast
\family typewriter
(unsigned char)(tail-1)
\family default
(unsigned char)(tail-1)
\family default
- within the if clause in section
-\begin_inset LatexCommand \ref{sub:A-Step-by Assembler Introduction}
+\series default
+
+\series bold
+within the if clause in section
+\begin_inset LatexCommand ref
+reference "sub:A-Step-by Assembler Introduction"
Note that when some function is called from an interrupt service routine
it should be preceded by a #pragma\InsetSpace ~
nooverlay
Note that when some function is called from an interrupt service routine
it should be preceded by a #pragma\InsetSpace ~
nooverlay
-\begin_inset LatexCommand \index{\#pragma nooverlay}
+\begin_inset LatexCommand index
+name "\\#pragma nooverlay"
while the interrupt service routine might be active.
They also must not be called from low priority interrupt service routines
while a high priority interrupt service routine might be active.
while the interrupt service routine might be active.
They also must not be called from low priority interrupt service routines
while a high priority interrupt service routine might be active.
- You could use semaphores or make the function
+ You could use semaphores or make the function
\emph default
if all parameters are passed in registers.
\newline
Also see section
\emph default
if all parameters are passed in registers.
\newline
Also see section
-\begin_inset LatexCommand \ref{sub:Overlaying}
+\begin_inset LatexCommand ref
+reference "sub:Overlaying"
\end_inset
\InsetSpace ~
about Overlaying and section
\end_inset
\InsetSpace ~
about Overlaying and section
-\begin_inset LatexCommand \ref{sub:Functions-using-private-banks}
+\begin_inset LatexCommand ref
+reference "sub:Functions-using-private-banks"
\begin_layout Standard
Interrupt
\begin_layout Standard
Interrupt
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
\end_inset
numbers and the corresponding address & descriptions for the Standard 8051/8052
are listed below.
SDCC will automatically adjust the
\end_inset
numbers and the corresponding address & descriptions for the Standard 8051/8052
are listed below.
SDCC will automatically adjust the
-\begin_inset LatexCommand \index{interrupt vector table}
+\begin_inset LatexCommand index
+name "interrupt vector table"
If the interrupt service routine is defined without
\emph on
using
If the interrupt service routine is defined without
\emph on
using
-\begin_inset LatexCommand \index{using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand index
+name "using (mcs51, ds390 register bank)"
-\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand index
+name "\\_\\_using (mcs51, ds390 register bank)"
& psw are saved and restored, if such an interrupt service routine calls
another function (using another register bank) then the entire register
bank of the called function will be saved on the stack
& psw are saved and restored, if such an interrupt service routine calls
another function (using another register bank) then the entire register
bank of the called function will be saved on the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
\begin_layout Subsection
HC08
\begin_layout Subsection
HC08
-\begin_inset LatexCommand \index{HC08}
+\begin_inset LatexCommand index
+name "HC08"
\begin_layout Standard
Since the number of interrupts
\begin_layout Standard
Since the number of interrupts
-\begin_inset LatexCommand \index{HC08!interrupt}
+\begin_inset LatexCommand index
+name "HC08!interrupt"
2 will use the interrupt vector at 0xfffa, and so on.
However, interrupt 0 (the reset vector at 0xfffe) is not redefinable in
this way; instead see section
2 will use the interrupt vector at 0xfffa, and so on.
However, interrupt 0 (the reset vector at 0xfffe) is not redefinable in
this way; instead see section
-\begin_inset LatexCommand \ref{sub:Startup-Code}
+\begin_inset LatexCommand ref
+reference "sub:Startup-Code"
\begin_layout Standard
The Z80
\begin_layout Standard
The Z80
-\begin_inset LatexCommand \index{Z80}
+\begin_inset LatexCommand index
+name "Z80"
\end_inset
uses several different methods for determining the correct interrupt
\end_inset
uses several different methods for determining the correct interrupt
-\begin_inset LatexCommand \index{Z80!interrupt}
+\begin_inset LatexCommand index
+name "Z80!interrupt"
\emph default
.
SDCC will generate code to disable all interrupts
\emph default
.
SDCC will generate code to disable all interrupts
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
\end_inset
upon entry to a critical function and restore the interrupt enable to the
previous state before returning.
Nesting critical functions will need one additional byte on the stack
\end_inset
upon entry to a critical function and restore the interrupt enable to the
previous state before returning.
Nesting critical functions will need one additional byte on the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
\family typewriter
int foo () __critical
\family typewriter
int foo () __critical
-\begin_inset LatexCommand \index{critical}
+\begin_inset LatexCommand index
+name "critical"
-\begin_inset LatexCommand \index{\_\_critical}
+\begin_inset LatexCommand index
+name "\\_\\_critical"
\begin_layout Standard
Interrupts
\begin_layout Standard
Interrupts
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
\begin_layout Standard
On other architectures which have seperate opcodes for enabling and disabling
interrupts you might want to make use of defines with inline assembly
\begin_layout Standard
On other architectures which have seperate opcodes for enabling and disabling
interrupts you might want to make use of defines with inline assembly
-\begin_inset LatexCommand \index{Assembler routines}
+\begin_inset LatexCommand index
+name "Assembler routines"
-\begin_inset LatexCommand \index{HC08!interrupt}
+\begin_inset LatexCommand index
+name "HC08!interrupt"
\family typewriter
#define CLI _asm
\family typewriter
#define CLI _asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand index
+name "\\_asm"
cli\InsetSpace ~
\InsetSpace ~
_endasm
cli\InsetSpace ~
\InsetSpace ~
_endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand index
+name "\\_endasm"
a timer or serial interrupt by manipulating an
\emph on
interrupt mask
a timer or serial interrupt by manipulating an
\emph on
interrupt mask
-\begin_inset LatexCommand \index{interrupt mask}
+\begin_inset LatexCommand index
+name "interrupt mask"
interrupt latency
\emph default
interrupt latency
\emph default
-\begin_inset LatexCommand \index{interrupt latency}
+\begin_inset LatexCommand index
+name "interrupt latency"
interrupt jitter
\emph default
interrupt jitter
\emph default
-\begin_inset LatexCommand \index{interrupt jitter}
+\begin_inset LatexCommand index
+name "interrupt jitter"
interrupt priorities
\emph default
interrupt priorities
\emph default
-\begin_inset LatexCommand \index{interrupt priority}
+\begin_inset LatexCommand index
+name "interrupt priority"
be implemented by manipulating the interrupt mask and reenabling interrupts
within the interrupt routine.
Check there is sufficient space on the stack
be implemented by manipulating the interrupt mask and reenabling interrupts
within the interrupt routine.
Check there is sufficient space on the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
\begin_layout Subsection
Semaphore
\begin_layout Subsection
Semaphore
-\begin_inset LatexCommand \index{semaphore}
+\begin_inset LatexCommand index
+name "semaphore"
\begin_layout Standard
Some architectures (mcs51/ds390) have an atomic
\begin_layout Standard
Some architectures (mcs51/ds390) have an atomic
-\begin_inset LatexCommand \index{atomic}
+\begin_inset LatexCommand index
+name "atomic"
- bit test and
-\emph on
-
-\emph default
-clear
-\emph on
-
-\emph default
-instruction.
+ bit test and clear instruction.
These type of instructions are typically used in preemptive multitasking
systems, where a routine f.e.
claims the use of a data structure ('acquires a lock
These type of instructions are typically used in preemptive multitasking
systems, where a routine f.e.
claims the use of a data structure ('acquires a lock
-\begin_inset LatexCommand \index{lock}
+\begin_inset LatexCommand index
+name "lock"
The instruction may also be used if interrupt and non-interrupt code have
to compete for a resource.
With the atomic bit test and clear instruction interrupts
The instruction may also be used if interrupt and non-interrupt code have
to compete for a resource.
With the atomic bit test and clear instruction interrupts
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
\family typewriter
volatile
\family typewriter
volatile
-\begin_inset LatexCommand \index{volatile}
+\begin_inset LatexCommand index
+name "volatile"
\begin_layout Standard
Note, mcs51 and ds390 support only an atomic
\begin_layout Standard
Note, mcs51 and ds390 support only an atomic
-\begin_inset LatexCommand \index{atomic}
+\begin_inset LatexCommand index
+name "atomic"
\begin_layout Section
Functions using private register banks
\begin_layout Section
Functions using private register banks
-\begin_inset LatexCommand \label{sub:Functions-using-private-banks}
+\begin_inset LatexCommand label
+name "sub:Functions-using-private-banks"
SDCC supports this feature with the
\emph on
using
SDCC supports this feature with the
\emph on
using
-\begin_inset LatexCommand \index{using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand index
+name "using (mcs51, ds390 register bank)"
-\begin_inset LatexCommand \index{\_\_using (mcs51, ds390 register bank)}
+\begin_inset LatexCommand index
+name "\\_\\_using (mcs51, ds390 register bank)"
\end_inset
\emph default
attribute (which tells the compiler to use a register bank
\end_inset
\emph default
attribute (which tells the compiler to use a register bank
-\begin_inset LatexCommand \index{register bank (mcs51, ds390)}
+\begin_inset LatexCommand index
+name "register bank (mcs51, ds390)"
It should only be applied to
\emph on
interrupt
It should only be applied to
\emph on
interrupt
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
-(pending: Note, nowadays the
+(pending: Note, nowadays the
- attribute has an effect on
+attribute has an effect on
-the generated code for a
+the generated code for a
function using a non-zero bank will assume that it can trash that register
bank, and will not save it.
Since high-priority interrupts
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}
+\begin_inset LatexCommand index
+name "interrupts"
-\begin_inset LatexCommand \index{interrupt priority}
+\begin_inset LatexCommand index
+name "interrupt priority"
\begin_layout Section
Startup Code
\begin_layout Section
Startup Code
-\begin_inset LatexCommand \label{sub:Startup-Code}
+\begin_inset LatexCommand label
+name "sub:Startup-Code"
-\begin_inset LatexCommand \index{Startup code}
+\begin_inset LatexCommand index
+name "Startup code"
\begin_layout Standard
The compiler triggers the linker to link certain initialization modules
from the runtime library
\begin_layout Standard
The compiler triggers the linker to link certain initialization modules
from the runtime library
-\begin_inset LatexCommand \index{Runtime library}
+\begin_inset LatexCommand index
+name "Runtime library"
One of these modules (crtstart.asm) contains a call to the C routine
\emph on
_sdcc_external_startup()
One of these modules (crtstart.asm) contains a call to the C routine
\emph on
_sdcc_external_startup()
-\begin_inset LatexCommand \index{\_sdcc\_external\_startup()}
+\begin_inset LatexCommand index
+name "\\_sdcc\\_external\\_startup()"
-
-\series default
-at the start of the CODE area.
+ at the start of the CODE area.
This routine is also in the runtime library
This routine is also in the runtime library
-\begin_inset LatexCommand \index{Runtime library}
+\begin_inset LatexCommand index
+name "Runtime library"
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
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
-\begin_inset LatexCommand \index{Variable initialization}
+\begin_inset LatexCommand index
+name "Variable initialization"
\end_inset
.
On some mcs51 variants xdata
\end_inset
.
On some mcs51 variants xdata
-\begin_inset LatexCommand \index{xdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "xdata (mcs51, ds390 storage class)"
\end_inset
memory has to be explicitly enabled before it can be accessed or if the
watchdog
\end_inset
memory has to be explicitly enabled before it can be accessed or if the
watchdog
-\begin_inset LatexCommand \index{watchdog}
+\begin_inset LatexCommand index
+name "watchdog"
-\begin_inset LatexCommand \index{-\/-iram-size <Value>}
+\begin_inset LatexCommand index
+name "-\\/-iram-size <Value>"
-\begin_inset LatexCommand \index{-\/-no-xinit-opt}
+\begin_inset LatexCommand index
+name "-\\/-no-xinit-opt"
-main-return
\emph default
-main-return
\emph default
-\begin_inset LatexCommand \index{-\/-main-return}
+\begin_inset LatexCommand index
+name "-\\/-main-return"
-\begin_inset LatexCommand \ref{sub:MCS51-variants}
+\begin_inset LatexCommand ref
+reference "sub:MCS51-variants"
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/device/lib/mcs51/crtstart.asm}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/device/lib/mcs51/crtstart.asm"
\end_inset
are the assembler options used in
\end_inset
are the assembler options used in
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/sdcc/trunk/sdcc/device/lib/mcs51/Makefile.in?view=markup }
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/sdcc/trunk/sdcc/device/lib/mcs51/Makefile.in?view=markup "
\begin_layout Standard
The HC08
\begin_layout Standard
The HC08
-\begin_inset LatexCommand \index{HC08}
+\begin_inset LatexCommand index
+name "HC08"
\begin_layout Standard
On the Z80
\begin_layout Standard
On the Z80
-\begin_inset LatexCommand \index{Z80}
+\begin_inset LatexCommand index
+name "Z80"
-no-std-crt0
\emph default
-no-std-crt0
\emph default
-\begin_inset LatexCommand \index{-\/-no-std-crt0}
+\begin_inset LatexCommand index
+name "-\\/-no-std-crt0"
\begin_layout Section
Inline Assembler Code
\begin_layout Section
Inline Assembler Code
-\begin_inset LatexCommand \index{Assembler routines}
+\begin_inset LatexCommand index
+name "Assembler routines"
\begin_layout Subsection
A Step by Step Introduction
\begin_layout Subsection
A Step by Step Introduction
-\begin_inset LatexCommand \label{sub:A-Step-by Assembler Introduction}
+\begin_inset LatexCommand label
+name "sub:A-Step-by Assembler Introduction"
\family typewriter
\size footnotesize
unsigned char __far
\family typewriter
\size footnotesize
unsigned char __far
-\begin_inset LatexCommand \index{far (storage class)}
+\begin_inset LatexCommand index
+name "far (storage class)"
-\begin_inset LatexCommand \index{\_\_far (storage class)}
+\begin_inset LatexCommand index
+name "\\_\\_far (storage class)"
-\begin_inset LatexCommand \index{at}
+\begin_inset LatexCommand index
+name "at"
-\begin_inset LatexCommand \index{\_\_at}
+\begin_inset LatexCommand index
+name "\\_\\_at"
\end_inset
(0x7f00) buf[0x100];
\end_inset
(0x7f00) buf[0x100];
-\begin_inset LatexCommand \index{Aligned array}
+\begin_inset LatexCommand index
+name "Aligned array"
\InsetSpace ~
\InsetSpace ~
/* if interrupts
\InsetSpace ~
\InsetSpace ~
/* if interrupts
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
\InsetSpace ~
\InsetSpace ~
section
\InsetSpace ~
\InsetSpace ~
section
-\begin_inset LatexCommand \ref{sub:Common-interrupt-pitfall-volatile}
+\begin_inset LatexCommand ref
+reference "sub:Common-interrupt-pitfall-volatile"
+\family default
+
+\family typewriter
+volatile
+\family default
+
+\family typewriter
+*/
\InsetSpace ~
if( head != (unsigned char)(tail-1)
)\InsetSpace ~
\InsetSpace ~
if( head != (unsigned char)(tail-1)
)\InsetSpace ~
+/* cast
+\family default
+
+\family typewriter
- to avoid promotion
-\begin_inset LatexCommand \index{promotion to signed int}
+
+\family typewriter
+to avoid promotion
+\begin_inset LatexCommand index
+name "promotion to signed int"
-\begin_inset LatexCommand \index{type promotion}
+\begin_inset LatexCommand index
+name "type promotion"
\InsetSpace ~
\InsetSpace ~
_asm
\InsetSpace ~
\InsetSpace ~
_asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand index
+name "\\_asm"
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand index
+name "\\_\\_asm"
r2,dpl
\newline
;buffer.c if( head != (unsigned char)(tail-1) ) \InsetSpace ~
r2,dpl
\newline
;buffer.c if( head != (unsigned char)(tail-1) ) \InsetSpace ~
+/* cast
+\family default
+
+\family typewriter
- to avoid promotion
-\begin_inset LatexCommand \index{promotion to signed int}
+
+\family typewriter
+to avoid promotion
+\begin_inset LatexCommand index
+name "promotion to signed int"
-\begin_inset LatexCommand \index{type promotion}
+\begin_inset LatexCommand index
+name "type promotion"
\newline
;buffer.c buf[ head++ ] = c; /* access to a 256 byte aligned array */
\newline
;buffer.c buf[ head++ ] = c; /* access to a 256 byte aligned array */
-\begin_inset LatexCommand \index{Aligned array}
+\begin_inset LatexCommand index
+name "Aligned array"
\InsetSpace ~
\InsetSpace ~
_endasm
\InsetSpace ~
\InsetSpace ~
_endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand index
+name "\\_endasm"
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand index
+name "\\_\\_endasm"
\InsetSpace ~
\InsetSpace ~
_asm
\InsetSpace ~
\InsetSpace ~
_asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand index
+name "\\_asm"
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand index
+name "\\_\\_asm"
\InsetSpace ~
\InsetSpace ~
_endasm
\InsetSpace ~
\InsetSpace ~
_endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand index
+name "\\_endasm"
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand index
+name "\\_\\_endasm"
, this includes any assembler directives and comment lines.
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
, this includes any assembler directives and comment lines.
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)}
+\begin_inset LatexCommand index
+name "asXXXX (as-gbz80, as-hc08, asx8051, as-z80)"
-\begin_inset LatexCommand \index{Assembler documentation}
+\begin_inset LatexCommand index
+name "Assembler documentation"
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/as/doc/asxhtm.html}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/as/doc/asxhtm.html"
The compiler does not do any validation of the code within the
\family typewriter
_asm
The compiler does not do any validation of the code within the
\family typewriter
_asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand index
+name "\\_asm"
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand index
+name "\\_\\_asm"
_endasm
\size footnotesize
_endasm
\size footnotesize
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand index
+name "\\_endasm"
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand index
+name "\\_\\_endasm"
keyword pair.
Specifically it will not know which registers are used and thus register
pushing/popping
keyword pair.
Specifically it will not know which registers are used and thus register
pushing/popping
-\begin_inset LatexCommand \index{push/pop}
+\begin_inset LatexCommand index
+name "push/pop"
-\begin_inset LatexCommand \index{-\/-peep-asm}
+\begin_inset LatexCommand index
+name "-\\/-peep-asm"
\emph default
command line option is used, the inline assembler code will be passed through
the peephole optimizer
\emph default
command line option is used, the inline assembler code will be passed through
the peephole optimizer
-\begin_inset LatexCommand \index{Peephole optimizer}
+\begin_inset LatexCommand index
+name "Peephole optimizer"
\begin_layout Subsection
Naked Functions
\begin_layout Subsection
Naked Functions
-\begin_inset LatexCommand \label{sub:Naked-Functions}
+\begin_inset LatexCommand label
+name "sub:Naked-Functions"
-\begin_inset LatexCommand \index{Naked functions}
+\begin_inset LatexCommand index
+name "Naked functions"
A special keyword may be associated with a function declaring it as
\emph on
_naked
A special keyword may be associated with a function declaring it as
\emph on
_naked
-\begin_inset LatexCommand \index{\_naked}
+\begin_inset LatexCommand index
+name "\\_naked"
-\begin_inset LatexCommand \index{\_\_naked}
+\begin_inset LatexCommand index
+name "\\_\\_naked"
\emph on
_naked
\emph default
function modifier attribute prevents the compiler from generating prologue
\emph on
_naked
\emph default
function modifier attribute prevents the compiler from generating prologue
-\begin_inset LatexCommand \index{function prologue}
+\begin_inset LatexCommand index
+name "function prologue"
-\begin_inset LatexCommand \index{function epilogue}
+\begin_inset LatexCommand index
+name "function epilogue"
\family typewriter
volatile
\family typewriter
volatile
-\begin_inset LatexCommand \index{volatile}
+\begin_inset LatexCommand index
+name "volatile"
\newline
void simpleInterrupt(void) __interrupt
\newline
void simpleInterrupt(void) __interrupt
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
-\begin_inset LatexCommand \index{\_\_interrupt}
+\begin_inset LatexCommand index
+name "\\_\\_interrupt"
\InsetSpace ~
\InsetSpace ~
_asm
\InsetSpace ~
\InsetSpace ~
_asm
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand index
+name "\\_asm"
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand index
+name "\\_\\_asm"
\InsetSpace ~
\InsetSpace ~
_endasm
\InsetSpace ~
\InsetSpace ~
_endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand index
+name "\\_endasm"
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand index
+name "\\_\\_endasm"
\begin_layout Verse
\family typewriter
\begin_layout Verse
\family typewriter
+Note, this is an
+\family default
+
+\family typewriter
- example, recent versions of SDCC generate
+
+\family typewriter
+example, recent versions of SDCC generate
+the
+\family default
+
+\family typewriter
- code for simpleInterrupt() and nakedInterrupt()!
+
+\family typewriter
+code for simpleInterrupt() and nakedInterrupt()!
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\begin_layout Standard
The related directive #pragma exclude
\begin_layout Standard
The related directive #pragma exclude
-\begin_inset LatexCommand \index{\#pragma exclude}
+\begin_inset LatexCommand index
+name "\\#pragma exclude"
\end_inset
allows a more fine grained control over pushing & popping
\end_inset
allows a more fine grained control over pushing & popping
-\begin_inset LatexCommand \index{push/pop}
+\begin_inset LatexCommand index
+name "push/pop"
-\begin_inset LatexCommand \index{\_asm}
+\begin_inset LatexCommand index
+name "\\_asm"
-\begin_inset LatexCommand \index{\_\_asm}
+\begin_inset LatexCommand index
+name "\\_\\_asm"
b,00001$
\newline
_endasm
b,00001$
\newline
_endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand index
+name "\\_endasm"
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand index
+name "\\_\\_endasm"
\begin_layout Standard
Inline assembler code cannot reference any C-labels, however it can reference
labels
\begin_layout Standard
Inline assembler code cannot reference any C-labels, however it can reference
labels
-\begin_inset LatexCommand \index{Labels}
+\begin_inset LatexCommand index
+name "Labels"
\InsetSpace ~
\InsetSpace ~
_endasm
\InsetSpace ~
\InsetSpace ~
_endasm
-\begin_inset LatexCommand \index{\_endasm}
+\begin_inset LatexCommand index
+name "\\_endasm"
-\begin_inset LatexCommand \index{\_\_endasm}
+\begin_inset LatexCommand index
+name "\\_\\_endasm"
\begin_layout Section
Interfacing with Assembler Code
\begin_layout Section
Interfacing with Assembler Code
-\begin_inset LatexCommand \index{Assembler routines}
+\begin_inset LatexCommand index
+name "Assembler routines"
\begin_layout Subsection
Global Registers used for Parameter Passing
\begin_layout Subsection
Global Registers used for Parameter Passing
-\begin_inset LatexCommand \index{Parameter passing}
+\begin_inset LatexCommand index
+name "Parameter passing"
The compiler always uses the global registers
\emph on
DPL, DPH
The compiler always uses the global registers
\emph on
DPL, DPH
-\begin_inset LatexCommand \index{DPTR, DPH, DPL}
+\begin_inset LatexCommand index
+name "DPTR, DPH, DPL"
-\begin_inset LatexCommand \index{DPTR}
+\begin_inset LatexCommand index
+name "DPTR"
-\begin_inset LatexCommand \index{B (mcs51, ds390 register)}
+\begin_inset LatexCommand index
+name "B (mcs51, ds390 register)"
- ACC
-\begin_inset LatexCommand \index{ACC (mcs51, ds390 register)}
+ACC
+\begin_inset LatexCommand index
+name "ACC (mcs51, ds390 register)"
\emph default
to pass the first (non-bit) parameter to a function, and also to pass the
return value
\emph default
to pass the first (non-bit) parameter to a function, and also to pass the
return value
-\begin_inset LatexCommand \index{return value}
+\begin_inset LatexCommand index
+name "return value"
\emph on
DPL
\emph default
\emph on
DPL
\emph default
\emph default
and
\emph on
\emph default
and
\emph on
\emph default
.
Generic pointers
\emph default
.
Generic pointers
-\begin_inset LatexCommand \index{generic pointer}
+\begin_inset LatexCommand index
+name "generic pointer"
\begin_layout Standard
Functions (with two or more parameters or bit parameters) that are called
through function pointers
\begin_layout Standard
Functions (with two or more parameters or bit parameters) that are called
through function pointers
-\begin_inset LatexCommand \index{function pointers}
+\begin_inset LatexCommand index
+name "function pointers"
-\begin_inset LatexCommand \index{naked}
+\begin_inset LatexCommand index
+name "naked"
-\begin_inset LatexCommand \index{-\/-callee-saves}
+\begin_inset LatexCommand index
+name "-\\/-callee-saves"
\begin_layout Standard
In the following example
\begin_layout Standard
In the following example
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
-\begin_inset LatexCommand \index{Assembler routines (non-reentrant)}
+\begin_inset LatexCommand index
+name "Assembler routines (non-reentrant)"
\end_inset
the function c_func calls an assembler routine asm_func, which takes two
parameters
\end_inset
the function c_func calls an assembler routine asm_func, which takes two
parameters
-\begin_inset LatexCommand \index{function parameter}
+\begin_inset LatexCommand index
+name "function parameter"
\InsetSpace ~
\InsetSpace ~
dph
\InsetSpace ~
\InsetSpace ~
dph
-\begin_inset LatexCommand \index{DPTR, DPH, DPL}
+\begin_inset LatexCommand index
+name "DPTR, DPH, DPL"
\begin_layout Standard
In this case
\begin_layout Standard
In this case
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
-\begin_inset LatexCommand \index{Assembler routines (reentrant)}
+\begin_inset LatexCommand index
+name "Assembler routines (reentrant)"
\end_inset
the second parameter
\end_inset
the second parameter
-\begin_inset LatexCommand \index{function parameter}
+\begin_inset LatexCommand index
+name "function parameter"
\begin_layout Section
int (16 bit)
\begin_layout Section
int (16 bit)
-\begin_inset LatexCommand \index{int (16 bit)}
+\begin_inset LatexCommand index
+name "int (16 bit)"
\end_inset
and long (32 bit)
\end_inset
and long (32 bit)
-\begin_inset LatexCommand \index{long (32 bit)}
+\begin_inset LatexCommand index
+name "long (32 bit)"
non-reentrant
\emph default
non-reentrant
\emph default
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand index
+name "-\\/-stack-auto"
\end_inset
-int-long-reent
\end_inset
-int-long-reent
-\begin_inset LatexCommand \index{-\/-int-long-reent}
+\begin_inset LatexCommand index
+name "-\\/-int-long-reent"
\begin_layout Section
Floating Point Support
\begin_layout Section
Floating Point Support
-\begin_inset LatexCommand \index{Floating point support}
+\begin_inset LatexCommand index
+name "Floating point support"
\begin_layout Section
Library Routines
\begin_layout Section
Library Routines
-\begin_inset LatexCommand \index{Libraries}
+\begin_inset LatexCommand index
+name "Libraries"
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-\begin_inset LatexCommand \index{<stdio.h>}
+\begin_inset LatexCommand index
+name "<stdio.h>"
\end_inset
As usual on embedded systems you have to provide your own
\family typewriter
getchar()
\end_inset
As usual on embedded systems you have to provide your own
\family typewriter
getchar()
-\begin_inset LatexCommand \index{getchar()}
+\begin_inset LatexCommand index
+name "getchar()"
\family typewriter
putchar()
\family typewriter
putchar()
-\begin_inset LatexCommand \index{putchar()}
+\begin_inset LatexCommand index
+name "putchar()"
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
- printf()
-\begin_inset LatexCommand \index{printf()}
+printf()
+\begin_inset LatexCommand index
+name "printf()"
\end_inset
\family default
\end_inset
\family default
\family default
does not support float (except on ds390).
To enable this recompile it with the option
\family default
does not support float (except on ds390).
To enable this recompile it with the option
-\begin_inset LatexCommand \index{USE\_FLOATS}
+\begin_inset LatexCommand index
+name "USE\\_FLOATS"
\end_inset
\emph default
on the command line.
\end_inset
\emph default
on the command line.
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-model-large}
+\begin_inset LatexCommand index
+name "-\\/-model-large"
If you're short on code memory you might want to use
\family typewriter
printf_small()
If you're short on code memory you might want to use
\family typewriter
printf_small()
-\begin_inset LatexCommand \index{printf\_small()}
+\begin_inset LatexCommand index
+name "printf\\_small()"
\emph on
instead
\emph default
\emph on
instead
\emph default
\family default
For the mcs51 there additionally are assembly versions
\family typewriter
printf_tiny()
\family default
For the mcs51 there additionally are assembly versions
\family typewriter
printf_tiny()
-\begin_inset LatexCommand \index{printf\_tiny() (mcs51)}
+\begin_inset LatexCommand index
+name "printf\\_tiny() (mcs51)"
(subset of printf using less than 270 bytes) and
\family typewriter
printf_fast()
(subset of printf using less than 270 bytes) and
\family typewriter
printf_fast()
-\begin_inset LatexCommand \index{printf\_fast() (mcs51)}
+\begin_inset LatexCommand index
+name "printf\\_fast() (mcs51)"
- printf_fast_f()
-\begin_inset LatexCommand \index{printf\_fast\_f() (mcs51)}
+printf_fast_f()
+\begin_inset LatexCommand index
+name "printf\\_fast\\_f() (mcs51)"
\begin_layout Standard
printf
\begin_layout Standard
printf
-\begin_inset LatexCommand \index{printf}
+\begin_inset LatexCommand index
+name "printf"
\begin_layout Standard
float format
\begin_layout Standard
float format
-\begin_inset LatexCommand \index{Floating point support}
+\begin_inset LatexCommand index
+name "Floating point support"
\begin_layout Subsubsection
<malloc.h>
\begin_layout Subsubsection
<malloc.h>
-\begin_inset LatexCommand \index{malloc.h}
+\begin_inset LatexCommand index
+name "malloc.h"
\begin_layout Standard
As of SDCC 2.6.2 you no longer need to call an initialization routine before
using dynamic memory allocation
\begin_layout Standard
As of SDCC 2.6.2 you no longer need to call an initialization routine before
using dynamic memory allocation
-\begin_inset LatexCommand \index{dynamic memory allocation (malloc)}
+\begin_inset LatexCommand index
+name "dynamic memory allocation (malloc)"
\end_inset
and a default heap
\end_inset
and a default heap
-\begin_inset LatexCommand \index{heap (malloc)}
+\begin_inset LatexCommand index
+name "heap (malloc)"
\begin_layout Standard
Libraries
\begin_layout Standard
Libraries
-\begin_inset LatexCommand \index{Libraries}
+\begin_inset LatexCommand index
+name "Libraries"
\end_inset
included in SDCC should have a license at least as liberal as the GNU Lesser
General Public License
\end_inset
included in SDCC should have a license at least as liberal as the GNU Lesser
General Public License
-\begin_inset LatexCommand \index{GNU Lesser General Public License, LGPL}
+\begin_inset LatexCommand index
+name "GNU Lesser General Public License, LGPL"
C, CAN, Ethernet, Profibus, Modbus, USB, SPI, JTAG ...), Media (IDE, Memory
cards, eeprom, flash...), En-/Decryption, Remote debugging, Realtime kernel,
Keyboard, LCD, RTC, FPGA, PID then the sdcc-user mailing list
C, CAN, Ethernet, Profibus, Modbus, USB, SPI, JTAG ...), Media (IDE, Memory
cards, eeprom, flash...), En-/Decryption, Remote debugging, Realtime kernel,
Keyboard, LCD, RTC, FPGA, PID then the sdcc-user mailing list
-\begin_inset LatexCommand \url{http://sourceforge.net/mail/?group_id=599}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/mail/?group_id=599"
\begin_layout Subsection
MCS51 Memory Models
\begin_layout Subsection
MCS51 Memory Models
-\begin_inset LatexCommand \index{Memory model}
+\begin_inset LatexCommand index
+name "Memory model"
-\begin_inset LatexCommand \index{MCS51 memory model}
+\begin_inset LatexCommand index
+name "MCS51 memory model"
When the medium or large model is used all variables declared without a
storage class will be allocated into the external ram, this includes all
parameters and local variables (for non-reentrant
When the medium or large model is used all variables declared without a
storage class will be allocated into the external ram, this includes all
parameters and local variables (for non-reentrant
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
\begin_layout Standard
Judicious usage of the processor specific storage classes
\begin_layout Standard
Judicious usage of the processor specific storage classes
-\begin_inset LatexCommand \index{Storage class}
+\begin_inset LatexCommand index
+name "Storage class"
\begin_layout Subsubsection
External Stack
\begin_layout Subsubsection
External Stack
-\begin_inset LatexCommand \label{sub:External-Stack}
+\begin_inset LatexCommand label
+name "sub:External-Stack"
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
-\begin_inset LatexCommand \index{External stack (mcs51)}
+\begin_inset LatexCommand index
+name "External stack (mcs51)"
\end_inset
-xstack option
\end_inset
-xstack option
-\begin_inset LatexCommand \index{-\/-xstack}
+\begin_inset LatexCommand index
+name "-\\/-xstack"
\end_inset
) is located in pdata
\end_inset
) is located in pdata
-\begin_inset LatexCommand \index{pdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "pdata (mcs51, ds390 storage class)"
-xstack option is used to compile the program, the parameters and local
variables
-xstack option is used to compile the program, the parameters and local
variables
-\begin_inset LatexCommand \index{local variables}
+\begin_inset LatexCommand index
+name "local variables"
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand index
+name "-\\/-stack-auto"
\begin_layout Standard
The compiler outputs the higher order address byte of the external ram segment
into port P2
\begin_layout Standard
The compiler outputs the higher order address byte of the external ram segment
into port P2
-\begin_inset LatexCommand \index{P2 (mcs51 sfr)}
+\begin_inset LatexCommand index
+name "P2 (mcs51 sfr)"
\end_inset
(see also section
\end_inset
(see also section
-\begin_inset LatexCommand \ref{sub:MCS51-variants}
+\begin_inset LatexCommand ref
+reference "sub:MCS51-variants"
\begin_layout Subsection
DS390 Memory Model
\begin_layout Subsection
DS390 Memory Model
-\begin_inset LatexCommand \index{Memory model}
+\begin_inset LatexCommand index
+name "Memory model"
-\begin_inset LatexCommand \index{DS390 memory model}
+\begin_inset LatexCommand index
+name "DS390 memory model"
\begin_layout Standard
The only model supported is Flat 24
\begin_layout Standard
The only model supported is Flat 24
-\begin_inset LatexCommand \index{Flat 24 (DS390 memory model)}
+\begin_inset LatexCommand index
+name "Flat 24 (DS390 memory model)"
-\begin_inset LatexCommand \index{Tinibios (DS390)}
+\begin_inset LatexCommand index
+name "Tinibios (DS390)"
\begin_layout Section
Pragmas
\begin_layout Section
Pragmas
-\begin_inset LatexCommand \label{sec:Pragmas}
+\begin_inset LatexCommand label
+name "sec:Pragmas"
-\begin_inset LatexCommand \index{Pragmas}
+\begin_inset LatexCommand index
+name "Pragmas"
Pragmas are used to turn on and/or off certain compiler options.
Some of them are closely related to corresponding command-line options
(see section
Pragmas are used to turn on and/or off certain compiler options.
Some of them are closely related to corresponding command-line options
(see section
-\begin_inset LatexCommand \vref{sec:Command-Line-Options}
+\begin_inset LatexCommand vref
+reference "sec:Command-Line-Options"
-\begin_inset LatexCommand \index{\#pragma save}
+\begin_inset LatexCommand index
+name "\\#pragma save"
-\begin_inset LatexCommand \index{\#pragma restore}
+\begin_inset LatexCommand index
+name "\\#pragma restore"
callee_saves
\series default
callee_saves
\series default
-\begin_inset LatexCommand \index{\#pragma callee\_saves}
+\begin_inset LatexCommand index
+name "\\#pragma callee\\_saves"
-\begin_inset LatexCommand \index{function prologue}
+\begin_inset LatexCommand index
+name "function prologue"
\end_inset
function1[,function2[,function3...]]
\end_inset
function1[,function2[,function3...]]
-\begin_inset LatexCommand \label{ite:callee_saves-function1[,function2[,function3...]]--}
+\begin_inset LatexCommand label
+name "ite:callee_saves-function1[,function2[,function3...]]--"
\end_inset
- The compiler by default uses a caller saves convention for register saving
across function calls, however this can cause unnecessary register pushing
and popping
\end_inset
- The compiler by default uses a caller saves convention for register saving
across function calls, however this can cause unnecessary register pushing
and popping
-\begin_inset LatexCommand \index{push/pop}
+\begin_inset LatexCommand index
+name "push/pop"
\end_inset
-callee-saves command line option is used (see page
\end_inset
-callee-saves command line option is used (see page
-\begin_inset LatexCommand \vpageref{lyx:--callee-saves-function1[,function2][,function3]...}
+\begin_inset LatexCommand vpageref
+reference "lyx:--callee-saves-function1[,function2][,function3]..."
\end_inset
), the function names specified in #pragma\InsetSpace ~
callee_saves
\end_inset
), the function names specified in #pragma\InsetSpace ~
callee_saves
-\begin_inset LatexCommand \index{\#pragma callee\_saves}
+\begin_inset LatexCommand index
+name "\\#pragma callee\\_saves"
-\begin_inset LatexCommand \index{\#pragma exclude}
+\begin_inset LatexCommand index
+name "\\#pragma exclude"
\end_inset
none | {acc[,b[,dpl[,dph]]] - The exclude pragma disables the generation
of pairs of push/pop
\end_inset
none | {acc[,b[,dpl[,dph]]] - The exclude pragma disables the generation
of pairs of push/pop
-\begin_inset LatexCommand \index{push/pop}
+\begin_inset LatexCommand index
+name "push/pop"
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
To enable the normal register saving for ISR functions use #pragma\InsetSpace ~
exclude\InsetSpace ~
none
To enable the normal register saving for ISR functions use #pragma\InsetSpace ~
exclude\InsetSpace ~
none
-\begin_inset LatexCommand \index{\#pragma exclude}
+\begin_inset LatexCommand index
+name "\\#pragma exclude"
\end_inset
.
See also the related keyword _naked
\end_inset
.
See also the related keyword _naked
-\begin_inset LatexCommand \index{\_naked}
+\begin_inset LatexCommand index
+name "\\_naked"
-\begin_inset LatexCommand \index{\_\_naked}
+\begin_inset LatexCommand index
+name "\\_\\_naked"
less_pedantic
\series default
less_pedantic
\series default
-\begin_inset LatexCommand \index{pedantic}
+\begin_inset LatexCommand index
+name "pedantic"
-\begin_inset LatexCommand \index{\#pragma less\_pedantic}
+\begin_inset LatexCommand index
+name "\\#pragma less\\_pedantic"
-\begin_inset LatexCommand \label{ite:less_pedantic}
+\begin_inset LatexCommand label
+name "ite:less_pedantic"
\end_inset
-less-pedantic
\end_inset
-less-pedantic
-\begin_inset LatexCommand \vpageref{lyx:--less-pedantic}
+\begin_inset LatexCommand vpageref
+reference "lyx:--less-pedantic"
disable_warning
\series default
<nnnn>
disable_warning
\series default
<nnnn>
-\begin_inset LatexCommand \index{\#pragma disable\_warning}
+\begin_inset LatexCommand index
+name "\\#pragma disable\\_warning"
-\begin_inset LatexCommand \index{\#pragma nogcse}
+\begin_inset LatexCommand index
+name "\\#pragma nogcse"
noinduction
\series default
noinduction
\series default
-\begin_inset LatexCommand \index{\#pragma noinduction}
+\begin_inset LatexCommand index
+name "\\#pragma noinduction"
noinvariant
\series default
noinvariant
\series default
-\begin_inset LatexCommand \index{\#pragma noinvariant}
+\begin_inset LatexCommand index
+name "\\#pragma noinvariant"
\end_inset
- will not do loop invariant optimizations.
For more details see Loop Invariants in section
\end_inset
- will not do loop invariant optimizations.
For more details see Loop Invariants in section
-\begin_inset LatexCommand \ref{sub:Loop-Optimizations}
+\begin_inset LatexCommand ref
+reference "sub:Loop-Optimizations"
-\begin_inset LatexCommand \index{\#pragma noiv}
+\begin_inset LatexCommand index
+name "\\#pragma noiv"
\end_inset
- Do not generate interrupt
\end_inset
- Do not generate interrupt
-\begin_inset LatexCommand \index{interrupt}
+\begin_inset LatexCommand index
+name "interrupt"
-\begin_inset LatexCommand \index{interrupt vector table}
+\begin_inset LatexCommand index
+name "interrupt vector table"
for the autovector feature of the Cypress EZ-USB FX2).
More elegantly this can be achieved by obmitting the optional interrupt
number after the interrupt keyword, see section
for the autovector feature of the Cypress EZ-USB FX2).
More elegantly this can be achieved by obmitting the optional interrupt
number after the interrupt keyword, see section
-\begin_inset LatexCommand \ref{sub:Interrupt-Service-Routines}
+\begin_inset LatexCommand ref
+reference "sub:Interrupt-Service-Routines"
nojtbound
\series default
nojtbound
\series default
-\begin_inset LatexCommand \index{\#pragma nojtbound}
+\begin_inset LatexCommand index
+name "\\#pragma nojtbound"
\end_inset
- will not generate code for boundary value checking, when switch statements
are turned into jump-tables (dangerous).
For more details see section
\end_inset
- will not generate code for boundary value checking, when switch statements
are turned into jump-tables (dangerous).
For more details see section
-\begin_inset LatexCommand \ref{sub:'switch'-Statements}
+\begin_inset LatexCommand ref
+reference "sub:'switch'-Statements"
noloopreverse
\series default
noloopreverse
\series default
-\begin_inset LatexCommand \index{\#pragma noloopreverse}
+\begin_inset LatexCommand index
+name "\\#pragma noloopreverse"
nooverlay
\series default
nooverlay
\series default
-\begin_inset LatexCommand \index{\#pragma nooverlay}
+\begin_inset LatexCommand index
+name "\\#pragma nooverlay"
stackauto
\series default
stackauto
\series default
-\begin_inset LatexCommand \index{\#pragma stackauto}
+\begin_inset LatexCommand index
+name "\\#pragma stackauto"
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand index
+name "-\\/-stack-auto"
-\begin_inset LatexCommand \ref{sec:Parameters-and-Local-Variables}
+\begin_inset LatexCommand ref
+reference "sec:Parameters-and-Local-Variables"
opt_code_speed
\series default
opt_code_speed
\series default
-\begin_inset LatexCommand \index{\#pragma opt\_code\_speed}
+\begin_inset LatexCommand index
+name "\\#pragma opt\\_code\\_speed"
opt_code_size
\series default
opt_code_size
\series default
-\begin_inset LatexCommand \index{\#pragma opt\_code\_size}
+\begin_inset LatexCommand index
+name "\\#pragma opt\\_code\\_size"
opt_code_balanced
\series default
opt_code_balanced
\series default
-\begin_inset LatexCommand \index{\#pragma opt\_code\_balanced}
+\begin_inset LatexCommand index
+name "\\#pragma opt\\_code\\_balanced"
std_sdcc89
\series default
std_sdcc89
\series default
-\begin_inset LatexCommand \index{\#pragma std\_sdcc89}
+\begin_inset LatexCommand index
+name "\\#pragma std\\_sdcc89"
-\begin_inset LatexCommand \index{\#pragma std\_c89}
+\begin_inset LatexCommand index
+name "\\#pragma std\\_c89"
std_sdcc99
\series default
std_sdcc99
\series default
-\begin_inset LatexCommand \index{\#pragma std\_sdcc99}
+\begin_inset LatexCommand index
+name "\\#pragma std\\_sdcc99"
-\begin_inset LatexCommand \index{\#pragma std\_c99}
+\begin_inset LatexCommand index
+name "\\#pragma std\\_c99"
codeseg
\series default
<name>
codeseg
\series default
<name>
-\begin_inset LatexCommand \index{\#pragma codeseg}
+\begin_inset LatexCommand index
+name "\\#pragma codeseg"
constseg
\series default
<name>
constseg
\series default
<name>
-\begin_inset LatexCommand \index{\#pragma constseg}
+\begin_inset LatexCommand index
+name "\\#pragma constseg"
\begin_layout Standard
The preprocessor SDCPP
\begin_layout Standard
The preprocessor SDCPP
-\begin_inset LatexCommand \index{sdcpp (preprocessor)}
+\begin_inset LatexCommand index
+name "sdcpp (preprocessor)"
pedantic_parse_number
\series default
pedantic_parse_number
\series default
-\begin_inset LatexCommand \index{pedantic}
+\begin_inset LatexCommand index
+name "pedantic"
-\begin_inset LatexCommand \index{\#pragma pedantic\_parse\_number}
+\begin_inset LatexCommand index
+name "\\#pragma pedantic\\_parse\\_number"
-\begin_inset LatexCommand \label{ite:pedantic_parse_number}
+\begin_inset LatexCommand label
+name "ite:pedantic_parse_number"
\end_inset
-pedantic-parse-number command line option
\end_inset
-pedantic-parse-number command line option
-\begin_inset LatexCommand \vpageref{lyx:-pedantic-parse-number}
+\begin_inset LatexCommand vpageref
+reference "lyx:-pedantic-parse-number"
\newline
Below is an example on how to use this pragma.
\newline
Below is an example on how to use this pragma.
- Note: this functionality is not in conformance with standard!
+Note: this functionality is not in conformance with standard!
\end_layout
\begin_layout Verse
\family typewriter
#pragma pedantic_parse_number +
\end_layout
\begin_layout Verse
\family typewriter
#pragma pedantic_parse_number +
-\begin_inset LatexCommand \index{\#pragma pedantic\_parse\_number}
+\begin_inset LatexCommand index
+name "\\#pragma pedantic\\_parse\\_number"
preproc_asm
\series default
preproc_asm
\series default
-\begin_inset LatexCommand \index{\#pragma preproc\_asm}
+\begin_inset LatexCommand index
+name "\\#pragma preproc\\_asm"
\family typewriter
#pragma preproc_asm -
\family typewriter
#pragma preproc_asm -
-\begin_inset LatexCommand \index{\#pragma preproc\_asm}
+\begin_inset LatexCommand index
+name "\\#pragma preproc\\_asm"
sdcc_hash
\series default
sdcc_hash
\series default
-\begin_inset LatexCommand \index{\#pragma sdcc\_hash}
+\begin_inset LatexCommand index
+name "\\#pragma sdcc\\_hash"
#pragma preproc_asm +
\newline
#pragma sdcc_hash +
#pragma preproc_asm +
\newline
#pragma sdcc_hash +
-\begin_inset LatexCommand \index{\#pragma sdcc\_hash}
+\begin_inset LatexCommand index
+name "\\#pragma sdcc\\_hash"
\family typewriter
#pragma save
\family typewriter
#pragma save
-\begin_inset LatexCommand \index{\#pragma save}
+\begin_inset LatexCommand index
+name "\\#pragma save"
/* save the current settings */
\newline
#pragma nogcse
/* save the current settings */
\newline
#pragma nogcse
-\begin_inset LatexCommand \index{\#pragma nogcse}
+\begin_inset LatexCommand index
+name "\\#pragma nogcse"
/* turnoff global subexpression elimination */
\newline
#pragma noinduction
/* turnoff global subexpression elimination */
\newline
#pragma noinduction
-\begin_inset LatexCommand \index{\#pragma noinduction}
+\begin_inset LatexCommand index
+name "\\#pragma noinduction"
}
\newline
#pragma restore
}
\newline
#pragma restore
-\begin_inset LatexCommand \index{\#pragma restore}
+\begin_inset LatexCommand index
+name "\\#pragma restore"
\begin_layout Standard
The compiler creates the following #defines
\begin_layout Standard
The compiler creates the following #defines
-\begin_inset LatexCommand \index{\#defines}
+\begin_inset LatexCommand index
+name "\\#defines"
-\begin_inset LatexCommand \index{Defines created by the compiler}
+\begin_inset LatexCommand index
+name "Defines created by the compiler"
\begin_layout Standard
SDCC
\begin_layout Standard
SDCC
-\begin_inset LatexCommand \index{SDCC}
+\begin_inset LatexCommand index
+name "SDCC"
\begin_layout Standard
SDCC_mcs51
\begin_layout Standard
SDCC_mcs51
-\begin_inset LatexCommand \index{SDCC\_mcs51}
+\begin_inset LatexCommand index
+name "SDCC\\_mcs51"
-\begin_inset LatexCommand \index{SDCC\_ds390}
+\begin_inset LatexCommand index
+name "SDCC\\_ds390"
-\begin_inset LatexCommand \index{SDCC\_z80}
+\begin_inset LatexCommand index
+name "SDCC\\_z80"
\begin_layout Standard
__mcs51
\begin_layout Standard
__mcs51
-\begin_inset LatexCommand \index{\_\_mcs51}
+\begin_inset LatexCommand index
+name "\\_\\_mcs51"
-\begin_inset LatexCommand \index{\_\_ds390}
+\begin_inset LatexCommand index
+name "\\_\\_ds390"
-\begin_inset LatexCommand \index{\_\_hc08}
+\begin_inset LatexCommand index
+name "\\_\\_hc08"
-\begin_inset LatexCommand \index{\_\_z80}
+\begin_inset LatexCommand index
+name "\\_\\_z80"
\begin_layout Standard
SDCC_STACK_AUTO
\begin_layout Standard
SDCC_STACK_AUTO
-\begin_inset LatexCommand \index{SDCC\_STACK\_AUTO}
+\begin_inset LatexCommand index
+name "SDCC\\_STACK\\_AUTO"
\begin_layout Standard
SDCC_MODEL_SMALL
\begin_layout Standard
SDCC_MODEL_SMALL
-\begin_inset LatexCommand \index{SDCC\_MODEL\_SMALL}
+\begin_inset LatexCommand index
+name "SDCC\\_MODEL\\_SMALL"
\begin_layout Standard
SDCC_MODEL_MEDIUM
\begin_layout Standard
SDCC_MODEL_MEDIUM
-\begin_inset LatexCommand \index{SDCC\_MODEL\_MEDIUM}
+\begin_inset LatexCommand index
+name "SDCC\\_MODEL\\_MEDIUM"
\begin_layout Standard
SDCC_MODEL_LARGE
\begin_layout Standard
SDCC_MODEL_LARGE
-\begin_inset LatexCommand \index{SDCC\_MODEL\_LARGE}
+\begin_inset LatexCommand index
+name "SDCC\\_MODEL\\_LARGE"
\begin_layout Standard
SDCC_USE_XSTACK
\begin_layout Standard
SDCC_USE_XSTACK
-\begin_inset LatexCommand \index{SDCC\_USE\_XSTACK}
+\begin_inset LatexCommand index
+name "SDCC\\_USE\\_XSTACK"
\begin_layout Standard
SDCC_STACK_TENBIT
\begin_layout Standard
SDCC_STACK_TENBIT
-\begin_inset LatexCommand \index{SDCC\_STACK\_TENBIT}
+\begin_inset LatexCommand index
+name "SDCC\\_STACK\\_TENBIT"
\begin_layout Standard
SDCC_MODEL_FLAT24
\begin_layout Standard
SDCC_MODEL_FLAT24
-\begin_inset LatexCommand \index{SDCC\_MODEL\_FLAT24}
+\begin_inset LatexCommand index
+name "SDCC\\_MODEL\\_FLAT24"
\begin_layout Standard
SDCC_REVISION
\begin_layout Standard
SDCC_REVISION
-\begin_inset LatexCommand \index{SDCC\_REVISION}
+\begin_inset LatexCommand index
+name "SDCC\\_REVISION"
\begin_layout Standard
SDCC_PARMS_IN_BANK1
\begin_layout Standard
SDCC_PARMS_IN_BANK1
-\begin_inset LatexCommand \index{SDCC\_PARMS\_IN\_BANK1}
+\begin_inset LatexCommand index
+name "SDCC\\_PARMS\\_IN\\_BANK1"
\begin_layout Standard
SDCC_FLOAT_REENT
\begin_layout Standard
SDCC_FLOAT_REENT
-\begin_inset LatexCommand \index{SDCC\_MODEL\_FLAT24}
+\begin_inset LatexCommand index
+name "SDCC\\_MODEL\\_FLAT24"
\begin_layout Standard
SDCC_INT_LONG_REENT
\begin_layout Standard
SDCC_INT_LONG_REENT
-\begin_inset LatexCommand \index{SDCC\_INT\_LONG\_REENT}
+\begin_inset LatexCommand index
+name "SDCC\\_INT\\_LONG\\_REENT"
\begin_layout Section
MCS51 variants
\begin_layout Section
MCS51 variants
-\begin_inset LatexCommand \label{sub:MCS51-variants}
+\begin_inset LatexCommand label
+name "sub:MCS51-variants"
-\begin_inset LatexCommand \index{MCS51 variants}
+\begin_inset LatexCommand index
+name "MCS51 variants"
\begin_layout Standard
With the upcome of devices with internal xdata and flash memory devices
using port P2
\begin_layout Standard
With the upcome of devices with internal xdata and flash memory devices
using port P2
-\begin_inset LatexCommand \index{P2 (mcs51 sfr)}
+\begin_inset LatexCommand index
+name "P2 (mcs51 sfr)"
\end_inset
as dedicated I/O port is becoming more popular.
Switching the high byte for pdata
\end_inset
as dedicated I/O port is becoming more popular.
Switching the high byte for pdata
-\begin_inset LatexCommand \index{pdata (mcs51, ds390 storage class)}
+\begin_inset LatexCommand index
+name "pdata (mcs51, ds390 storage class)"
\end_inset
access which was formerly done by port P2 is then achieved by a Special
Function Register
\end_inset
access which was formerly done by port P2 is then achieved by a Special
Function Register
-\begin_inset LatexCommand \index{sfr}
+\begin_inset LatexCommand index
+name "sfr"
should define an sfr with the name _XPAGE
\family typewriter
should define an sfr with the name _XPAGE
\family typewriter
-\begin_inset LatexCommand \index{\_XPAGE (mcs51)}
+\begin_inset LatexCommand index
+name "\\_XPAGE (mcs51)"
\begin_layout Standard
For more exotic implementations further customizations may be needed.
See section
\begin_layout Standard
For more exotic implementations further customizations may be needed.
See section
-\begin_inset LatexCommand \ref{sub:Startup-Code}
+\begin_inset LatexCommand ref
+reference "sub:Startup-Code"
\begin_layout Standard
Some MCS51 variants offer features like Double DPTR
\begin_layout Standard
Some MCS51 variants offer features like Double DPTR
-\begin_inset LatexCommand \index{DPTR}
+\begin_inset LatexCommand index
+name "DPTR"
\begin_layout Standard
Bankswitching
\begin_layout Standard
Bankswitching
-\begin_inset LatexCommand \index{Bankswitching}
+\begin_inset LatexCommand index
+name "Bankswitching"
\end_inset
(a.k.a.
code banking
\end_inset
(a.k.a.
code banking
-\begin_inset LatexCommand \index{code banking}
+\begin_inset LatexCommand index
+name "code banking"
-\begin_inset LatexCommand \index{banked}
+\begin_inset LatexCommand index
+name "banked"
\end_inset
-codeseg BANK1 (See
\end_inset
-codeseg BANK1 (See
-\begin_inset LatexCommand \ref{lyx:-codeseg}
+\begin_inset LatexCommand ref
+reference "lyx:-codeseg"
\end_inset
) on the command line when compiling or #pragma codeseg BANK1 (See
\end_inset
) on the command line when compiling or #pragma codeseg BANK1 (See
-\begin_inset LatexCommand \ref{sec:Pragmas}
+\begin_inset LatexCommand ref
+reference "sec:Pragmas"
to put your segments.
To do this you use the following command line option to SDCC: -Wl-b BANK1=0x180
00 (See
to put your segments.
To do this you use the following command line option to SDCC: -Wl-b BANK1=0x180
00 (See
-\begin_inset LatexCommand \ref{lyx:-Wl option}
+\begin_inset LatexCommand ref
+reference "lyx:-Wl option"
\begin_layout Standard
The DS80C400
\begin_layout Standard
The DS80C400
-\begin_inset LatexCommand \index{DS80C400}
+\begin_inset LatexCommand index
+name "DS80C400"
-\begin_inset LatexCommand \index{DS400}
+\begin_inset LatexCommand index
+name "DS400"
-\begin_inset LatexCommand \url{ftp://ftp.dalsemi.com/pub/tini/ds80c400/c_libraries/sdcc/index.html}
+\begin_inset LatexCommand url
+target "ftp://ftp.dalsemi.com/pub/tini/ds80c400/c_libraries/sdcc/index.html"
\begin_layout Standard
SDCC can target both the Zilog Z80
\begin_layout Standard
SDCC can target both the Zilog Z80
-\begin_inset LatexCommand \index{Z80}
+\begin_inset LatexCommand index
+name "Z80"
\end_inset
and the Nintendo Gameboy's Z80-like gbz80
\end_inset
and the Nintendo Gameboy's Z80-like gbz80
-\begin_inset LatexCommand \index{gbz80 (GameBoy Z80)}
+\begin_inset LatexCommand index
+name "gbz80 (GameBoy Z80)"
The Z80 port is passed through the same
\emph on
regressions tests
The Z80 port is passed through the same
\emph on
regressions tests
-\begin_inset LatexCommand \index{Regression test}
+\begin_inset LatexCommand index
+name "Regression test"
\end_inset
\emph default
(see section
\end_inset
\emph default
(see section
-\begin_inset LatexCommand \ref{sec:Quality-control}
+\begin_inset LatexCommand ref
+reference "sec:Quality-control"
As always, the code is the authoritative reference - see z80/ralloc.c and
z80/gen.c.
The stack
As always, the code is the authoritative reference - see z80/ralloc.c and
z80/gen.c.
The stack
-\begin_inset LatexCommand \index{Z80!stack}
+\begin_inset LatexCommand index
+name "Z80!stack"
IX is used as the base pointer, HL and IY are used as a temporary registers,
and BC and DE are available for holding variables.
Return values
IX is used as the base pointer, HL and IY are used as a temporary registers,
and BC and DE are available for holding variables.
Return values
-\begin_inset LatexCommand \index{Z80!return value}
+\begin_inset LatexCommand index
+name "Z80!return value"
\begin_layout Standard
The port to the Freescale/Motorola HC08
\begin_layout Standard
The port to the Freescale/Motorola HC08
-\begin_inset LatexCommand \index{HC08}
+\begin_inset LatexCommand index
+name "HC08"
\begin_layout Standard
The HC08 port passes the regression test suite (see section
\begin_layout Standard
The HC08 port passes the regression test suite (see section
-\begin_inset LatexCommand \ref{sec:Quality-control}
+\begin_inset LatexCommand ref
+reference "sec:Quality-control"
\begin_layout Section
The PIC14
\begin_layout Section
The PIC14
-\begin_inset LatexCommand \index{PIC14}
+\begin_inset LatexCommand index
+name "PIC14"
\begin_layout Standard
The PIC14 port adds support for Microchip
\begin_layout Standard
The PIC14 port adds support for Microchip
-\begin_inset LatexCommand \index{Microchip}
+\begin_inset LatexCommand index
+name "Microchip"
-\begin_inset LatexCommand \index{PIC14}
+\begin_inset LatexCommand index
+name "PIC14"
\begin_layout Subsection
PIC Code Pages
\begin_layout Subsection
PIC Code Pages
-\begin_inset LatexCommand \index{code page (pic14)}
+\begin_inset LatexCommand index
+name "code page (pic14)"
\end_inset
and Memory Banks
\end_inset
and Memory Banks
-\begin_inset LatexCommand \index{Memory bank (pic14)}
+\begin_inset LatexCommand index
+name "Memory bank (pic14)"
\begin_layout Standard
For the interrupt function, use the keyword `__interrupt'
\begin_layout Standard
For the interrupt function, use the keyword `__interrupt'
-\begin_inset LatexCommand \index{PIC14!interrupt}
+\begin_inset LatexCommand index
+name "PIC14!interrupt"
\begin_layout Standard
For assembling you can use either GPUTILS'
\begin_layout Standard
For assembling you can use either GPUTILS'
-\begin_inset LatexCommand \index{gputils (pic tools)}
+\begin_inset LatexCommand index
+name "gputils (pic tools)"
\end_inset
gpasm.exe or MPLAB's mpasmwin.exe.
GPUTILS are available from
\end_inset
gpasm.exe or MPLAB's mpasmwin.exe.
GPUTILS are available from
-\begin_inset LatexCommand \url{http://sourceforge.net/projects/gputils}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/projects/gputils"
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-Please note that indentations within a
+Please note that indentations within a
\family default
have to be done with a tabulator character.
\end_layout
\family default
have to be done with a tabulator character.
\end_layout
-\begin_inset LatexCommand \index{PIC14!Options!-\/-debug-extra}
+\begin_inset LatexCommand index
+name "PIC14!Options!-\\/-debug-extra"
-\begin_inset LatexCommand \index{PIC14!Options!-\/-no-pcode-opt}
+\begin_inset LatexCommand index
+name "PIC14!Options!-\\/-no-pcode-opt"
-\begin_inset LatexCommand \index{PIC14!Options!-\/-stack-loc}
+\begin_inset LatexCommand index
+name "PIC14!Options!-\\/-stack-loc"
-\begin_inset LatexCommand \index{PIC14!Options!-\/-stack-size}
+\begin_inset LatexCommand index
+name "PIC14!Options!-\\/-stack-size"
-\begin_inset LatexCommand \index{PIC14}
+\begin_inset LatexCommand index
+name "PIC14"
\begin_layout Section
The PIC16
\begin_layout Section
The PIC16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
\begin_layout Standard
The PIC16 port adds support for Microchip
\begin_layout Standard
The PIC16 port adds support for Microchip
-\begin_inset LatexCommand \index{Microchip}
+\begin_inset LatexCommand index
+name "Microchip"
-\begin_inset LatexCommand \index{PIC}
+\begin_inset LatexCommand index
+name "PIC"
-\begin_inset LatexCommand \index{PIC16!Options!-\/-callee-saves}
+\begin_inset LatexCommand index
+name "PIC16!Options!-\\/-callee-saves"
\end_inset
-fommit-frame-pointer
\end_inset
-fommit-frame-pointer
-\begin_inset LatexCommand \index{PIC16!Options!-\/-fommit-frame-pointer}
+\begin_inset LatexCommand index
+name "PIC16!Options!-\\/-fommit-frame-pointer"
\begin_layout Subsection
Port Specific Options
\begin_layout Subsection
Port Specific Options
-\begin_inset LatexCommand \index{Options PIC16}
+\begin_inset LatexCommand index
+name "Options PIC16"
\end_inset
-mplab-comp MPLAB
\end_inset
-mplab-comp MPLAB
-\begin_inset LatexCommand \index{PIC16!MPLAB}
+\begin_inset LatexCommand index
+name "PIC16!MPLAB"
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand index
+name "-\\/-debug"
\begin_layout Standard
PIC16
\begin_layout Standard
PIC16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
\begin_layout Standard
PIC16
\begin_layout Standard
PIC16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
\begin_layout Subsection
Pragmas
\begin_layout Subsection
Pragmas
-\begin_inset LatexCommand \label{sub:PIC16_Pragmas}
+\begin_inset LatexCommand label
+name "sub:PIC16_Pragmas"
\begin_layout Standard
The PIC16
\begin_layout Standard
The PIC16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
\begin_layout Description
stack
\begin_layout Description
stack
-\begin_inset LatexCommand \index{PIC16!Pragmas!\#pragma stack}
+\begin_inset LatexCommand index
+name "PIC16!Pragmas!\\#pragma stack"
\begin_layout Description
code
\begin_layout Description
code
-\begin_inset LatexCommand \index{PIC16!Pragmas!\#pragma code}
+\begin_inset LatexCommand index
+name "PIC16!Pragmas!\\#pragma code"
\begin_layout Subsection
Header Files
\begin_layout Subsection
Header Files
-\begin_inset LatexCommand \label{sub:PIC16_Header-Files}
+\begin_inset LatexCommand label
+name "sub:PIC16_Header-Files"
\begin_layout Standard
There is one main header file
\begin_layout Standard
There is one main header file
-\begin_inset LatexCommand \index{PIC16!Header files}
+\begin_inset LatexCommand index
+name "PIC16!Header files"
\end_inset
that can be included to the source files using the pic16
\end_inset
that can be included to the source files using the pic16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
\begin_layout Subsection
Libraries
\begin_layout Subsection
Libraries
-\begin_inset LatexCommand \label{sub:pic16Libraries}
+\begin_inset LatexCommand label
+name "sub:pic16Libraries"
\begin_layout Standard
The libraries
\begin_layout Standard
The libraries
-\begin_inset LatexCommand \index{PIC16!Libraries}
+\begin_inset LatexCommand index
+name "PIC16!Libraries"
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
\begin_layout Standard
\noindent
Libraries are created with gplib which is part of the gputils package
\begin_layout Standard
\noindent
Libraries are created with gplib which is part of the gputils package
-\begin_inset LatexCommand \url{http://sourceforge.net/projects/gputils}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/projects/gputils"
\begin_layout Enumerate
Recompile the pic16 libraries as described in
\begin_layout Enumerate
Recompile the pic16 libraries as described in
-\begin_inset LatexCommand \ref{sub:pic16Libraries}
+\begin_inset LatexCommand ref
+reference "sub:pic16Libraries"
\begin_layout Standard
The standard device libraries (see
\begin_layout Standard
The standard device libraries (see
-\begin_inset LatexCommand \ref{sub:PIC16_Header-Files}
+\begin_inset LatexCommand ref
+reference "sub:PIC16_Header-Files"
\begin_layout Standard
The stack
\begin_layout Standard
The stack
-\begin_inset LatexCommand \index{PIC16!stack}
+\begin_inset LatexCommand index
+name "PIC16!stack"
\begin_layout Standard
In addition to the standard SDCC function keywords, PIC16
\begin_layout Standard
In addition to the standard SDCC function keywords, PIC16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
\begin_layout Description
wparam
\begin_layout Description
wparam
-\begin_inset LatexCommand \index{PIC16!wparam}
+\begin_inset LatexCommand index
+name "PIC16!wparam"
\begin_layout Description
shadowregs
\begin_layout Description
shadowregs
-\begin_inset LatexCommand \index{PIC16!shadowregs}
+\begin_inset LatexCommand index
+name "PIC16!shadowregs"
\begin_layout Standard
An interrupt
\begin_layout Standard
An interrupt
-\begin_inset LatexCommand \index{PIC16!interrupt}
+\begin_inset LatexCommand index
+name "PIC16!interrupt"
\begin_layout Standard
When entering an interrupt, currently the PIC16
\begin_layout Standard
When entering an interrupt, currently the PIC16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
The FILE type is actually a generic pointer which defines one more type
of generic pointers, the
\emph on
The FILE type is actually a generic pointer which defines one more type
of generic pointers, the
\emph on
This new type has the format:
\end_layout
This new type has the format:
\end_layout
\begin_layout Standard
In order to increase performance
\emph on
\begin_layout Standard
In order to increase performance
\emph on
-is declared in stdio.h as having its parameter in WREG (it has the wparam
+ is declared in stdio.h as having its parameter in WREG (it has the wparam
keyword).
In stdio.h exists the macro PUTCHAR(arg) that defines the putchar function
in a user-friendly way.
keyword).
In stdio.h exists the macro PUTCHAR(arg) that defines the putchar function
in a user-friendly way.
\begin_layout Standard
For sprintf and vsprintf
\emph on
\begin_layout Standard
For sprintf and vsprintf
\emph on
-should normally be a data pointer where the resulting string will be placed.
+ should normally be a data pointer where the resulting string will be placed.
No range checking is done so the user should allocate the necessery buffer.
For fprintf and vfprintf
\emph on
No range checking is done so the user should allocate the necessery buffer.
For fprintf and vfprintf
\emph on
\labelwidthstring 00.00.0000
\series medium
\labelwidthstring 00.00.0000
\series medium
-this declares the function prototype for the
+ this declares the function prototype for the
\emph on
handler
\emph default
\emph on
handler
\emph default
\begin_layout Standard
The default stack
\begin_layout Standard
The default stack
-\begin_inset LatexCommand \index{PIC16!stack}
+\begin_inset LatexCommand index
+name "PIC16!stack"
\begin_layout Standard
The PIC16 port currently passes most but not all of the tests in SDCC's
regression test
\begin_layout Standard
The PIC16 port currently passes most but not all of the tests in SDCC's
regression test
-\begin_inset LatexCommand \index{Regression test (PIC16)}
+\begin_inset LatexCommand index
+name "Regression test (PIC16)"
\end_inset
suite (see section
\end_inset
suite (see section
-\begin_inset LatexCommand \ref{sec:Quality-control}
+\begin_inset LatexCommand ref
+reference "sec:Quality-control"
\begin_layout Itemize
run a syntax-checking tool like splint
\begin_layout Itemize
run a syntax-checking tool like splint
-\begin_inset LatexCommand \index{splint (syntax checking tool)}
+\begin_inset LatexCommand index
+name "splint (syntax checking tool)"
-\begin_inset LatexCommand \index{lint (syntax checking tool)}
+\begin_inset LatexCommand index
+name "lint (syntax checking tool)"
\end_inset
-more-pedantic
\end_inset
-more-pedantic
-\begin_inset LatexCommand \ref{lyx:more-pedantic-SPLINT}
+\begin_inset LatexCommand ref
+reference "lyx:more-pedantic-SPLINT"
\end_inset
-more-pedantic
\end_inset
-more-pedantic
-\begin_inset LatexCommand \ref{lyx:more-pedantic-SPLINT}
+\begin_inset LatexCommand ref
+reference "lyx:more-pedantic-SPLINT"
\begin_layout Itemize
there is a separate section about SDCDB (section
\begin_layout Itemize
there is a separate section about SDCDB (section
-\begin_inset LatexCommand \ref{cha:Debugging-with-SDCDB}
+\begin_inset LatexCommand ref
+reference "cha:Debugging-with-SDCDB"
\begin_layout Itemize
or (8051 specific) use a freeware/commercial simulator which interfaces
to the AOMF
\begin_layout Itemize
or (8051 specific) use a freeware/commercial simulator which interfaces
to the AOMF
-\begin_inset LatexCommand \index{AOMF, AOMF51}
+\begin_inset LatexCommand index
+name "AOMF, AOMF51"
-\begin_inset LatexCommand \ref{OMF file}
+\begin_inset LatexCommand ref
+reference "OMF file"
a program and read/write memory locations.
For the 8051 good examples of monitors are paulmon and cmon51 (see section
a program and read/write memory locations.
For the 8051 good examples of monitors are paulmon and cmon51 (see section
-\begin_inset LatexCommand \ref{sec:Related-open-source-tools}
+\begin_inset LatexCommand ref
+reference "sec:Related-open-source-tools"
digital oscilloscope
\emph default
digital oscilloscope
\emph default
-\begin_inset LatexCommand \index{Oscilloscope}
+\begin_inset LatexCommand index
+name "Oscilloscope"
-\begin_inset LatexCommand \index{ICE (in circuit emulator)}
+\begin_inset LatexCommand index
+name "ICE (in circuit emulator)"
\emph default
doesn't affect runtime behaviour until a breakpoint is hit.
For the mcs51 most hardware debuggers use the AOMF
\emph default
doesn't affect runtime behaviour until a breakpoint is hit.
For the mcs51 most hardware debuggers use the AOMF
-\begin_inset LatexCommand \index{AOMF, AOMF51}
+\begin_inset LatexCommand index
+name "AOMF, AOMF51"
-\begin_inset LatexCommand \ref{OMF file}
+\begin_inset LatexCommand ref
+reference "OMF file"
\begin_layout Section
Debugging with SDCDB
\begin_layout Section
Debugging with SDCDB
-\begin_inset LatexCommand \label{cha:Debugging-with-SDCDB}
+\begin_inset LatexCommand label
+name "cha:Debugging-with-SDCDB"
-\begin_inset LatexCommand \index{SDCDB (debugger)}
+\begin_inset LatexCommand index
+name "SDCDB (debugger)"
\begin_layout Standard
SDCC is distributed with a source level debugger
\begin_layout Standard
SDCC is distributed with a source level debugger
-\begin_inset LatexCommand \index{Debugger}
+\begin_inset LatexCommand index
+name "Debugger"
\end_inset
.
The debugger uses a command line interface, the command repertoire of the
debugger has been kept as close to gdb
\end_inset
.
The debugger uses a command line interface, the command repertoire of the
debugger has been kept as close to gdb
-\begin_inset LatexCommand \index{gdb}
+\begin_inset LatexCommand index
+name "gdb"
-\begin_inset LatexCommand \index{-\/-debug}
+\begin_inset LatexCommand index
+name "-\\/-debug"
be generated.
The compiler generates a .adb file for each of these files.
The linker creates the .cdb
be generated.
The compiler generates a .adb file for each of these files.
The linker creates the .cdb
-\begin_inset LatexCommand \index{<file>.cdb}
+\begin_inset LatexCommand index
+name "<file>.cdb"
\end_inset
file from the .adb
\end_inset
file from the .adb
-\begin_inset LatexCommand \index{<file>.adb}
+\begin_inset LatexCommand index
+name "<file>.adb"
-\begin_inset LatexCommand \url{http://ec2drv.sf.net/}
+\begin_inset LatexCommand url
+target "http://ec2drv.sf.net/"
\begin_layout Itemize
foo.ihx - the Intel hex format
\begin_layout Itemize
foo.ihx - the Intel hex format
-\begin_inset LatexCommand \index{Intel hex format}
+\begin_inset LatexCommand index
+name "Intel hex format"
raphics File
\size footnotesize
raphics File
\size footnotesize
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/doc/figures/ddd_example.png}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/doc/figures/ddd_example.png"
\end_inset
\size default
shows a screenshot of a debugging session with DDD
\end_inset
\size default
shows a screenshot of a debugging session with DDD
-\begin_inset LatexCommand \index{DDD (debugger)}
+\begin_inset LatexCommand index
+name "DDD (debugger)"
\begin_layout Subsection
Interfacing SDCDB with XEmacs
\begin_layout Subsection
Interfacing SDCDB with XEmacs
-\begin_inset LatexCommand \index{XEmacs}
+\begin_inset LatexCommand index
+name "XEmacs"
-\begin_inset LatexCommand \index{Emacs}
+\begin_inset LatexCommand index
+name "Emacs"
\newline
\family typewriter
\newline
\family typewriter
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'
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'
-\begin_inset LatexCommand \index{promotion to signed int}
+\begin_inset LatexCommand index
+name "promotion to signed int"
before doing any operation.
This promotion
before doing any operation.
This promotion
-\begin_inset LatexCommand \index{type promotion}
+\begin_inset LatexCommand index
+name "type promotion"
-\begin_inset LatexCommand \label{type promotion}
+\begin_inset LatexCommand label
+name "type promotion"
\begin_layout Itemize
Declare the variables to be local
\begin_layout Itemize
Declare the variables to be local
-\begin_inset LatexCommand \index{local variables}
+\begin_inset LatexCommand index
+name "local variables"
\begin_layout Section
Porting code from or to other compilers
\begin_layout Section
Porting code from or to other compilers
-\begin_inset LatexCommand \label{sec:Porting-code-to-other-compilers}
+\begin_inset LatexCommand label
+name "sec:Porting-code-to-other-compilers"
\begin_layout Itemize
check the device specific header files
\begin_layout Itemize
check the device specific header files
-\begin_inset LatexCommand \index{Header files}
+\begin_inset LatexCommand index
+name "Header files"
-\begin_inset LatexCommand \index{Include files}
+\begin_inset LatexCommand index
+name "Include files"
\end_inset
for compiler specific syntax.
Eventually include the file <compiler.h
\end_inset
for compiler specific syntax.
Eventually include the file <compiler.h
-\begin_inset LatexCommand \index{compiler.h (include file)}
+\begin_inset LatexCommand index
+name "compiler.h (include file)"
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/sdcc/trunk/sdcc/device/include/mcs51/compiler.h?view=markup}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/sdcc/trunk/sdcc/device/include/mcs51/compiler.h?view=markup"
\end_inset
to allow using common header files.
(see f.e.
cc2510fx.h
\end_inset
to allow using common header files.
(see f.e.
cc2510fx.h
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/sdcc/trunk/sdcc/device/include/mcs51/cc2510fx.h?view=markup}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/sdcc/trunk/sdcc/device/include/mcs51/cc2510fx.h?view=markup"
versions of the same compiler might also use more clever optimizations
this is good idea anyway).
See section
versions of the same compiler might also use more clever optimizations
this is good idea anyway).
See section
-\begin_inset LatexCommand \ref{sub:Common-interrupt-pitfall-volatile}
+\begin_inset LatexCommand ref
+reference "sub:Common-interrupt-pitfall-volatile"
more often than other compilers.
Eventually insert explicit casts to
\family typewriter
more often than other compilers.
Eventually insert explicit casts to
\family typewriter
\family default
.
Also check that the ~\InsetSpace ~
operator
\family default
.
Also check that the ~\InsetSpace ~
operator
-\begin_inset LatexCommand \index{\~\/ Operator}
+\begin_inset LatexCommand index
+name "\\~\\/ Operator"
\end_inset
is not used on
\family typewriter
bit
\end_inset
is not used on
\family typewriter
bit
-\begin_inset LatexCommand \index{bit}
+\begin_inset LatexCommand index
+name "bit"
variables, use the !\InsetSpace ~
operator instead.
See sections
variables, use the !\InsetSpace ~
operator instead.
See sections
-\begin_inset LatexCommand \ref{type promotion}
+\begin_inset LatexCommand ref
+reference "type promotion"
-\begin_inset LatexCommand \ref{sec:Compatibility-with-previous}
+\begin_inset LatexCommand ref
+reference "sec:Compatibility-with-previous"
\begin_layout Itemize
check for differences in printf parameters (some compilers push (va_arg
\begin_layout Itemize
check for differences in printf parameters (some compilers push (va_arg
-\begin_inset LatexCommand \index{vararg, va\_arg}
+\begin_inset LatexCommand index
+name "vararg, va\\_arg"
\family default
.
See section
\family default
.
See section
-\begin_inset LatexCommand \ref{sec:Compatibility-with-previous}
+\begin_inset LatexCommand ref
+reference "sec:Compatibility-with-previous"
\begin_layout Itemize
check the resulting memory map
\begin_layout Itemize
check the resulting memory map
-\begin_inset LatexCommand \index{Memory map}
+\begin_inset LatexCommand index
+name "Memory map"
\begin_layout Section
Tools
\begin_layout Section
Tools
-\begin_inset LatexCommand \index{Tools}
+\begin_inset LatexCommand index
+name "Tools"
\begin_layout Standard
uCsim
\begin_layout Standard
uCsim
-\begin_inset LatexCommand \index{uCsim}
+\begin_inset LatexCommand index
+name "uCsim"
\begin_layout Standard
header file
\begin_layout Standard
header file
-\begin_inset LatexCommand \index{Header files}
+\begin_inset LatexCommand index
+name "Header files"
-\begin_inset LatexCommand \index{Include files}
+\begin_inset LatexCommand index
+name "Include files"
\begin_layout Standard
Intel Hex packer
\begin_layout Standard
Intel Hex packer
-\begin_inset LatexCommand \index{packihx (tool)}
+\begin_inset LatexCommand index
+name "packihx (tool)"
\begin_layout Section
Documentation
\begin_layout Section
Documentation
-\begin_inset LatexCommand \index{Documentation}
+\begin_inset LatexCommand index
+name "Documentation"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-You're reading it right now
+You're reading it right now
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/doc/sdccman.pdf}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/doc/sdccman.pdf"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/ChangeLog}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/ChangeLog"
\begin_layout Standard
ASXXXX
\begin_layout Standard
ASXXXX
-\begin_inset LatexCommand \index{asXXXX (as-gbz80, as-hc08, asx8051, as-z80)}
+\begin_inset LatexCommand index
+name "asXXXX (as-gbz80, as-hc08, asx8051, as-z80)"
-\begin_inset LatexCommand \index{Assembler documentation}
+\begin_inset LatexCommand index
+name "Assembler documentation"
\end_inset
Assemblers and
\newline
ASLINK
\end_inset
Assemblers and
\newline
ASLINK
-\begin_inset LatexCommand \index{aslink}
+\begin_inset LatexCommand index
+name "aslink"
-\begin_inset LatexCommand \index{Linker documentation}
+\begin_inset LatexCommand index
+name "Linker documentation"
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/as/doc/asxhtm.html}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/as/doc/asxhtm.html"
\begin_layout Standard
SDCC regression test
\begin_layout Standard
SDCC regression test
-\begin_inset LatexCommand \index{Regression test}
+\begin_inset LatexCommand index
+name "Regression test"
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/doc/test_suite_spec.pdf}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/doc/test_suite_spec.pdf"
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/sdcc/trunk/sdcc/doc/}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/sdcc/trunk/sdcc/doc/"
\begin_layout Standard
Notes on debugging with SDCDB
\begin_layout Standard
Notes on debugging with SDCDB
-\begin_inset LatexCommand \index{SDCDB (debugger)}
+\begin_inset LatexCommand index
+name "SDCDB (debugger)"
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/debugger/README}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/debugger/README"
\begin_layout Standard
uCsim
\begin_layout Standard
uCsim
-\begin_inset LatexCommand \index{uCsim}
+\begin_inset LatexCommand index
+name "uCsim"
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/sim/ucsim/doc/index.html}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/sim/ucsim/doc/index.html"
\begin_layout Standard
Temporary notes on the pic16
\begin_layout Standard
Temporary notes on the pic16
-\begin_inset LatexCommand \index{PIC16}
+\begin_inset LatexCommand index
+name "PIC16"
-\begin_inset LatexCommand \url{http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/src/pic16/NOTES}
+\begin_inset LatexCommand url
+target "http://sdcc.svn.sourceforge.net/viewvc/*checkout*/sdcc/trunk/sdcc/src/pic16/NOTES"
\emph default
\bar default
\noun default
\emph default
\bar default
\noun default
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
\InsetSpace ~
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/doc/cdbfileformat.pdf}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/doc/cdbfileformat.pdf"
\begin_layout Section
Related open source tools
\begin_layout Section
Related open source tools
-\begin_inset LatexCommand \label{sec:Related-open-source-tools}
+\begin_inset LatexCommand label
+name "sec:Related-open-source-tools"
-\begin_inset LatexCommand \index{Related tools}
+\begin_inset LatexCommand index
+name "Related tools"
\begin_layout Standard
gpsim
\begin_layout Standard
gpsim
-\begin_inset LatexCommand \index{gpsim (pic simulator)}
+\begin_inset LatexCommand index
+name "gpsim (pic simulator)"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.dattalo.com/gnupic/gpsim.html}
+\begin_inset LatexCommand url
+target "http://www.dattalo.com/gnupic/gpsim.html"
\begin_layout Standard
gputils
\begin_layout Standard
gputils
-\begin_inset LatexCommand \index{gputils (pic tools)}
+\begin_inset LatexCommand index
+name "gputils (pic tools)"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://sourceforge.net/projects/gputils}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/projects/gputils"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://freshmeat.net/projects/flp5/}
+\begin_inset LatexCommand url
+target "http://freshmeat.net/projects/flp5/"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://sourceforge.net/projects/ec2drv}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/projects/ec2drv"
\begin_layout Standard
indent
\begin_layout Standard
indent
-\begin_inset LatexCommand \index{indent (source formatting tool)}
+\begin_inset LatexCommand index
+name "indent (source formatting tool)"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://directory.fsf.org/GNU/indent.html}
+\begin_inset LatexCommand url
+target "http://directory.fsf.org/GNU/indent.html"
\begin_layout Standard
srecord
\begin_layout Standard
srecord
-\begin_inset LatexCommand \index{srecord (bin, hex, ... tool)}
+\begin_inset LatexCommand index
+name "srecord (bin, hex, ... tool)"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://sourceforge.net/projects/srecord}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/projects/srecord"
\begin_layout Standard
objdump
\begin_layout Standard
objdump
-\begin_inset LatexCommand \index{objdump (tool)}
+\begin_inset LatexCommand index
+name "objdump (tool)"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://sourceforge.net/projects/cmon51}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/projects/cmon51"
\begin_layout Standard
doxygen
\begin_layout Standard
doxygen
-\begin_inset LatexCommand \index{doxygen (source documentation tool)}
+\begin_inset LatexCommand index
+name "doxygen (source documentation tool)"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.doxygen.org}
+\begin_inset LatexCommand url
+target "http://www.doxygen.org"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.kdevelop.org}
+\begin_inset LatexCommand url
+target "http://www.kdevelop.org"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.pjrc.com/tech/8051/paulmon2.html}
+\begin_inset LatexCommand url
+target "http://www.pjrc.com/tech/8051/paulmon2.html"
\begin_layout Standard
splint
\begin_layout Standard
splint
-\begin_inset LatexCommand \index{splint (syntax checking tool)}
+\begin_inset LatexCommand index
+name "splint (syntax checking tool)"
\begin_layout Standard
Statically checks c sources (see
\begin_layout Standard
Statically checks c sources (see
-\begin_inset LatexCommand \ref{lyx:more-pedantic-SPLINT}
+\begin_inset LatexCommand ref
+reference "lyx:more-pedantic-SPLINT"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.splint.org}
+\begin_inset LatexCommand url
+target "http://www.splint.org"
\begin_layout Standard
ddd
\begin_layout Standard
ddd
-\begin_inset LatexCommand \index{DDD (debugger)}
+\begin_inset LatexCommand index
+name "DDD (debugger)"
\begin_layout Standard
Debugger, serves nicely as GUI to SDCDB
\begin_layout Standard
Debugger, serves nicely as GUI to SDCDB
-\begin_inset LatexCommand \index{SDCDB (debugger)}
+\begin_inset LatexCommand index
+name "SDCDB (debugger)"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.gnu.org/software/ddd/}
+\begin_inset LatexCommand url
+target "http://www.gnu.org/software/ddd/"
\begin_layout Standard
d52
\begin_layout Standard
d52
-\begin_inset LatexCommand \index{d52}
+\begin_inset LatexCommand index
+name "d52"
-\begin_inset LatexCommand \index{d52 (disassembler)}
+\begin_inset LatexCommand index
+name "d52 (disassembler)"
\begin_layout Standard
Disassembler, can count instruction cycles
\begin_layout Standard
Disassembler, can count instruction cycles
-\begin_inset LatexCommand \index{instruction cycles (count)}
+\begin_inset LatexCommand index
+name "instruction cycles (count)"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.8052.com/users/disasm/}
+\begin_inset LatexCommand url
+target "http://www.8052.com/users/disasm/"
\begin_layout Standard
cmake
\begin_layout Standard
cmake
-\begin_inset LatexCommand \index{cmake}
+\begin_inset LatexCommand index
+name "cmake"
\begin_layout Standard
Cross platform build system, generates Makefiles
\begin_layout Standard
Cross platform build system, generates Makefiles
-\begin_inset LatexCommand \index{Makefile}
+\begin_inset LatexCommand index
+name "Makefile"
\end_inset
and project workspaces
\end_inset
and project workspaces
-\begin_inset LatexCommand \index{project workspace}
+\begin_inset LatexCommand index
+name "project workspace"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.cmake.org}
+\begin_inset LatexCommand url
+target "http://www.cmake.org"
\InsetSpace ~
\InsetSpace ~
and a dedicated wiki entry:
\InsetSpace ~
\InsetSpace ~
and a dedicated wiki entry:
-\begin_inset LatexCommand \url{http://www.cmake.org/Wiki/CmakeSdcc}
+\begin_inset LatexCommand url
+target "http://www.cmake.org/Wiki/CmakeSdcc"
\begin_layout Standard
C Reference Card
\begin_layout Standard
C Reference Card
-\begin_inset LatexCommand \index{C Reference card}
+\begin_inset LatexCommand index
+name "C Reference card"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://refcards.com/refcards/c/index.html}
+\begin_inset LatexCommand url
+target "http://refcards.com/refcards/c/index.html"
\begin_layout Standard
C-FAQ
\begin_layout Standard
C-FAQ
-\begin_inset LatexCommand \index{C FAQ}
+\begin_inset LatexCommand index
+name "C FAQ"
\begin_inset Text
\begin_layout Standard
\begin_inset Text
\begin_layout Standard
-\begin_inset LatexCommand \url{http://www.c-faq.com}
+\begin_inset LatexCommand url
+target "http://www.c-faq.com"
\begin_layout Standard
\size footnotesize
\begin_layout Standard
\size footnotesize
-\begin_inset LatexCommand \url{http://www.open-std.org/jtc1/sc22/wg14/www/standards.html#9899}
+\begin_inset LatexCommand url
+target "http://www.open-std.org/jtc1/sc22/wg14/www/standards.html#9899"
\begin_layout Standard
\size footnotesize
\begin_layout Standard
\size footnotesize
-\begin_inset LatexCommand \url{http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1021.pdf}
+\begin_inset LatexCommand url
+target "http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1021.pdf"
\begin_layout Standard
SDCC makes no claims about the completeness of this list and about up-to-datenes
s or correctness of the application notes
\begin_layout Standard
SDCC makes no claims about the completeness of this list and about up-to-datenes
s or correctness of the application notes
-\begin_inset LatexCommand \index{Application notes}
+\begin_inset LatexCommand index
+name "Application notes"
\size footnotesize
Using the SDCC Compiler for the DS80C400
\size footnotesize
Using the SDCC Compiler for the DS80C400
-\begin_inset LatexCommand \index{DS80C400}
+\begin_inset LatexCommand index
+name "DS80C400"
\begin_layout Standard
\size footnotesize
\begin_layout Standard
\size footnotesize
-\begin_inset LatexCommand \url{http://pdfserv.maxim-ic.com/en/an/AN3346.pdf}
+\begin_inset LatexCommand url
+target "http://pdfserv.maxim-ic.com/en/an/AN3346.pdf"
\size footnotesize
Using the Free SDCC C Compiler to Develop Firmware for the DS89C420/430/440/450
\size footnotesize
Using the Free SDCC C Compiler to Develop Firmware for the DS89C420/430/440/450
-\begin_inset LatexCommand \index{DS89C4x0}
+\begin_inset LatexCommand index
+name "DS89C4x0"
\begin_layout Standard
\size footnotesize
\begin_layout Standard
\size footnotesize
-\begin_inset LatexCommand \url{http://pdfserv.maxim-ic.com/en/an/AN3477.pdf}
+\begin_inset LatexCommand url
+target "http://pdfserv.maxim-ic.com/en/an/AN3477.pdf"
\size footnotesize
Integrating SDCC 8051 Tools Into The Silicon Labs IDE
\size footnotesize
Integrating SDCC 8051 Tools Into The Silicon Labs IDE
-\begin_inset LatexCommand \index{IDE}
+\begin_inset LatexCommand index
+name "IDE"
\begin_layout Standard
\size footnotesize
\begin_layout Standard
\size footnotesize
-\begin_inset LatexCommand \url{http://www.silabs.com/public/documents/tpub_doc/anote/Microcontrollers/en/an198.pdf}
+\begin_inset LatexCommand url
+target "http://www.silabs.com/public/documents/tpub_doc/anote/Microcontrollers/en/an198.pdf"
\begin_layout Standard
\size footnotesize
\begin_layout Standard
\size footnotesize
-\begin_inset LatexCommand \url{http://www.ramtron.com/doc/Products/Microcontroller/Support_Tools.asp}
+\begin_inset LatexCommand url
+target "http://www.ramtron.com/doc/Products/Microcontroller/Support_Tools.asp"
\begin_layout Standard
\size footnotesize
\begin_layout Standard
\size footnotesize
-\begin_inset LatexCommand \url{http://www.ramtron.com/doc/Products/Microcontroller/Support_Tools.asp}
+\begin_inset LatexCommand url
+target "http://www.ramtron.com/doc/Products/Microcontroller/Support_Tools.asp"
\begin_layout Standard
\size footnotesize
\begin_layout Standard
\size footnotesize
-\begin_inset LatexCommand \url{http://focus.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sbaa109&fileType=pdf}
+\begin_inset LatexCommand url
+target "http://focus.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sbaa109&fileType=pdf"
\begin_layout Chapter
Support
\begin_layout Chapter
Support
-\begin_inset LatexCommand \index{Support}
+\begin_inset LatexCommand index
+name "Support"
\begin_layout Standard
The SDCC project is hosted on the SDCC sourceforge site at
\begin_layout Standard
The SDCC project is hosted on the SDCC sourceforge site at
-\begin_inset LatexCommand \htmlurl{http://sourceforge.net/projects/sdcc}
+\begin_inset LatexCommand htmlurl
+target "http://sourceforge.net/projects/sdcc"
\end_inset
.
You'll find the complete set of mailing lists
\end_inset
.
You'll find the complete set of mailing lists
-\begin_inset LatexCommand \index{Mailing list(s)}
+\begin_inset LatexCommand index
+name "Mailing list(s)"
\end_inset
, forums, bug reporting system, patch submission
\end_inset
, forums, bug reporting system, patch submission
-\begin_inset LatexCommand \index{Patch submission}
+\begin_inset LatexCommand index
+name "Patch submission"
\end_inset
system, download
\end_inset
system, download
-\begin_inset LatexCommand \index{download}
+\begin_inset LatexCommand index
+name "download"
\end_inset
area and Subversion code repository
\end_inset
area and Subversion code repository
-\begin_inset LatexCommand \index{Subversion code repository}
+\begin_inset LatexCommand index
+name "Subversion code repository"
\begin_layout Section
Reporting Bugs
\begin_layout Section
Reporting Bugs
-\begin_inset LatexCommand \index{Bug reporting}
+\begin_inset LatexCommand index
+name "Bug reporting"
-\begin_inset LatexCommand \index{Reporting bugs}
+\begin_inset LatexCommand index
+name "Reporting bugs"
-\begin_inset LatexCommand \index{-\/-dumpall}
+\begin_inset LatexCommand index
+name "-\\/-dumpall"
Please have a short check that you are using a recent version of SDCC and
the bug is not yet known.
This is the link for reporting bugs:
Please have a short check that you are using a recent version of SDCC and
the bug is not yet known.
This is the link for reporting bugs:
-\begin_inset LatexCommand \htmlurl{http://sourceforge.net/tracker/?group_id=599&atid=100599}
+\begin_inset LatexCommand htmlurl
+target "http://sourceforge.net/tracker/?group_id=599&atid=100599"
\end_inset
.
With SDCC on average having more than 200 downloads
\end_inset
.
With SDCC on average having more than 200 downloads
-\begin_inset LatexCommand \index{download}
+\begin_inset LatexCommand index
+name "download"
\begin_layout Section
Requesting Features
\begin_layout Section
Requesting Features
-\begin_inset LatexCommand \label{sub:Requesting-Features}
+\begin_inset LatexCommand label
+name "sub:Requesting-Features"
-\begin_inset LatexCommand \index{Feature request}
+\begin_inset LatexCommand index
+name "Feature request"
-\begin_inset LatexCommand \index{Requesting features}
+\begin_inset LatexCommand index
+name "Requesting features"
Like bug reports feature requests are forwarded to the developer mailing
list.
This is the link for requesting features:
Like bug reports feature requests are forwarded to the developer mailing
list.
This is the link for requesting features:
-\begin_inset LatexCommand \htmlurl{http://sourceforge.net/tracker/?group_id=599&atid=350599}
+\begin_inset LatexCommand htmlurl
+target "http://sourceforge.net/tracker/?group_id=599&atid=350599"
Like bug reports contributed patches are forwarded to the developer mailing
list.
This is the link for submitting patches
Like bug reports contributed patches are forwarded to the developer mailing
list.
This is the link for submitting patches
-\begin_inset LatexCommand \index{Patch submission}
+\begin_inset LatexCommand index
+name "Patch submission"
-\begin_inset LatexCommand \url{http://sourceforge.net/tracker/?group_id=599&atid=300599}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/tracker/?group_id=599&atid=300599"
+\series default
+ will do.
\end_layout
\begin_layout Section
\end_layout
\begin_layout Section
\begin_layout Standard
These links should take you directly to the
\begin_layout Standard
These links should take you directly to the
-\begin_inset LatexCommand \url[Mailing lists]{http://sourceforge.net/mail/?group_id=599}
+\begin_inset LatexCommand url
+name "Mailing lists"
+target "http://sourceforge.net/mail/?group_id=599"
-\begin_inset LatexCommand \url[Forums]{http://sourceforge.net/forum/?group_id=599}
+\begin_inset LatexCommand url
+name "Forums"
+target "http://sourceforge.net/forum/?group_id=599"
-\begin_inset LatexCommand \index{Mailing list(s)}
+\begin_inset LatexCommand index
+name "Mailing list(s)"
\begin_layout Standard
You can follow the status of the Subversion version
\begin_layout Standard
You can follow the status of the Subversion version
-\begin_inset LatexCommand \index{version}
+\begin_inset LatexCommand index
+name "version"
\end_inset
of SDCC by watching the Changelog
\end_inset
of SDCC by watching the Changelog
-\begin_inset LatexCommand \index{Changelog}
+\begin_inset LatexCommand index
+name "Changelog"
\end_inset
in the Subversion repository
\size footnotesize
\end_inset
in the Subversion repository
\size footnotesize
-\begin_inset LatexCommand \htmlurl{http://sdcc.svn.sourceforge.net/viewcvs.cgi/*checkout*/sdcc/trunk/sdcc/ChangeLog}
+\begin_inset LatexCommand htmlurl
+target "http://sdcc.svn.sourceforge.net/viewcvs.cgi/*checkout*/sdcc/trunk/sdcc/ChangeLog"
\series default
or the filenames of the snapshot versions of SDCC include date and its
Subversion
\series default
or the filenames of the snapshot versions of SDCC include date and its
Subversion
-\begin_inset LatexCommand \index{Subversion code repository}
+\begin_inset LatexCommand index
+name "Subversion code repository"
\end_inset
number.
Subversion allows to download the source of recent or previous versions
\end_inset
number.
Subversion allows to download the source of recent or previous versions
-\begin_inset LatexCommand \url{http://sourceforge.net/svn/?group_id=599}
+\begin_inset LatexCommand url
+target "http://sourceforge.net/svn/?group_id=599"
there.
SDCC versions starting from 1999 up to now are available (currently the
versions prior to the conversion from cvs
there.
SDCC versions starting from 1999 up to now are available (currently the
versions prior to the conversion from cvs
-\begin_inset LatexCommand \index{cvs|see{Subversion}}
+\begin_inset LatexCommand index
+name "cvs|see{Subversion}"
\begin_layout Section
Release policy
\begin_layout Section
Release policy
-\begin_inset LatexCommand \index{Release policy}
+\begin_inset LatexCommand index
+name "Release policy"
excuse has to be found.
Kidding aside, we have to get better there! On the other hand there are
daily snapshots available at
excuse has to be found.
Kidding aside, we have to get better there! On the other hand there are
daily snapshots available at
-\begin_inset LatexCommand \htmlurl[snap]{http://sdcc.sourceforge.net/snap.php}
+\begin_inset LatexCommand htmlurl
+name "snap"
+target "http://sdcc.sourceforge.net/snap.php"
\end_inset
, and you can always build the very last version (hopefully with many bugs
fixed, and features added) from the source code available at
\end_inset
, and you can always build the very last version (hopefully with many bugs
fixed, and features added) from the source code available at
-\begin_inset LatexCommand \htmlurl[Source]{http://sdcc.sourceforge.net/snap.php#Source}
+\begin_inset LatexCommand htmlurl
+name "Source"
+target "http://sdcc.sourceforge.net/snap.php#Source"
\end_inset
.
The SDCC Wiki
\end_inset
.
The SDCC Wiki
-\begin_inset LatexCommand \index{wiki}
+\begin_inset LatexCommand index
+name "wiki"
-\begin_inset LatexCommand \index{SDCC Wiki}
+\begin_inset LatexCommand index
+name "SDCC Wiki"
-\begin_inset LatexCommand \url{http://sdcc.wiki.sourceforge.net/}
+\begin_inset LatexCommand url
+target "http://sdcc.wiki.sourceforge.net/"
\begin_layout Section
Examples
\begin_layout Section
Examples
-\begin_inset LatexCommand \index{Examples}
+\begin_inset LatexCommand index
+name "Examples"
You'll find some small examples in the directory
\emph on
sdcc/device/examples/.
You'll find some small examples in the directory
\emph on
sdcc/device/examples/.
-More examples and libraries are available at
+ More examples and libraries are available at
- The SDCC Open Knowledge Resource
-\begin_inset LatexCommand \url{http://sdccokr.dl9sec.de/}
+The SDCC Open Knowledge Resource
+\begin_inset LatexCommand url
+target "http://sdccokr.dl9sec.de/"
-web site or at
-\begin_inset LatexCommand \url{http://www.pjrc.com/tech/8051/}
+ web site or at
+\begin_inset LatexCommand url
+target "http://www.pjrc.com/tech/8051/"
\begin_layout Section
Quality control
\begin_layout Section
Quality control
-\begin_inset LatexCommand \label{sec:Quality-control}
+\begin_inset LatexCommand label
+name "sec:Quality-control"
-\begin_inset LatexCommand \index{Quality control}
+\begin_inset LatexCommand index
+name "Quality control"
regression tests
\shape default
regression tests
\shape default
-\begin_inset LatexCommand \index{Regression test}
+\begin_inset LatexCommand index
+name "Regression test"
more than 500 test cases which include more than 4500 tests.
The results of these tests are published daily on SDCC's snapshot page
(click on the red or green symbols on the right side of
more than 500 test cases which include more than 4500 tests.
The results of these tests are published daily on SDCC's snapshot page
(click on the red or green symbols on the right side of
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/snap.php}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/snap.php"
There is a separate document
\shape italic
test_suite.pdf
There is a separate document
\shape italic
test_suite.pdf
-\begin_inset LatexCommand \index{Test suite}
+\begin_inset LatexCommand index
+name "Test suite"
\end_inset
\shape default
\end_inset
\shape default
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/doc/test_suite_spec.pdf}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/doc/test_suite_spec.pdf"
\series default
if you don't want to run the complete tests).
The test code might also be interesting if you want to look for examples
\series default
if you don't want to run the complete tests).
The test code might also be interesting if you want to look for examples
-\begin_inset LatexCommand \index{Examples}
+\begin_inset LatexCommand index
+name "Examples"
\end_inset
checking corner cases of SDCC or if you plan to submit patches
\end_inset
checking corner cases of SDCC or if you plan to submit patches
-\begin_inset LatexCommand \index{Patch submission}
+\begin_inset LatexCommand index
+name "Patch submission"
\begin_layout Standard
The PIC14 port uses a different set of regression tests
\begin_layout Standard
The PIC14 port uses a different set of regression tests
-\begin_inset LatexCommand \index{Regression test (PIC14)}
+\begin_inset LatexCommand index
+name "Regression test (PIC14)"
have a curriculum that can be extended for years.
Then you could use an fpga board as target and your curriculum will seamlessly
extend from logic synthesis (
have a curriculum that can be extended for years.
Then you could use an fpga board as target and your curriculum will seamlessly
extend from logic synthesis (
-\begin_inset LatexCommand \url[http://www.opencores.org]{opencores.org}
+\begin_inset LatexCommand url
+name "http://www.opencores.org"
+target "opencores.org"
-\begin_inset LatexCommand \url[Oregano]{http://www.oregano.at/ip/ip01.htm}
+\begin_inset LatexCommand url
+name "Oregano"
+target "http://www.oregano.at/ip/ip01.htm"
\end_inset
), over assembly programming, to C to FPGA compilers (
\end_inset
), over assembly programming, to C to FPGA compilers (
-\begin_inset LatexCommand \url[FPGAC]{http://sf.net/projects/fpgac}
+\begin_inset LatexCommand url
+name "FPGAC"
+target "http://sf.net/projects/fpgac"
be able to insert excursions about skills like using a revision control
system, submitting/applying patches, using a type-setting (as opposed to
word-processing) engine LyX/LaTeX, using
be able to insert excursions about skills like using a revision control
system, submitting/applying patches, using a type-setting (as opposed to
word-processing) engine LyX/LaTeX, using
-\begin_inset LatexCommand \url[SourceForge]{http://www.sf.net}
+\begin_inset LatexCommand url
+name "SourceForge"
+target "http://www.sf.net"
\end_inset
, following some
\end_inset
, following some
-\begin_inset LatexCommand \url[netiquette]{http://en.wikipedia.org/wiki/Netiquette}
+\begin_inset LatexCommand url
+name "netiquette"
+target "http://en.wikipedia.org/wiki/Netiquette"
\end_inset
, understanding BSD/LGPL/GPL/Proprietary licensing, growth models of Open
Source Software, CPU simulation, compiler regression tests
\end_inset
, understanding BSD/LGPL/GPL/Proprietary licensing, growth models of Open
Source Software, CPU simulation, compiler regression tests
-\begin_inset LatexCommand \index{Regression test}
+\begin_inset LatexCommand index
+name "Regression test"
\newline
And if there should be a shortage of ideas then you can always point students
to the ever-growing feature request list
\newline
And if there should be a shortage of ideas then you can always point students
to the ever-growing feature request list
-\begin_inset LatexCommand \htmlurl{http://sourceforge.net/tracker/?group_id=599&atid=350599}
+\begin_inset LatexCommand htmlurl
+target "http://sourceforge.net/tracker/?group_id=599&atid=350599"
\emph default
choice (among them Alpha, i386, i386_64, Mac OS X, Mips, Sparc, Windows
and eventually
\emph default
choice (among them Alpha, i386, i386_64, Mac OS X, Mips, Sparc, Windows
and eventually
-\begin_inset LatexCommand \url[OLPC]{http://www.laptop.org}
+\begin_inset LatexCommand url
+name "OLPC"
+target "http://www.laptop.org"
\begin_layout Section
Optimizations
\begin_layout Section
Optimizations
-\begin_inset LatexCommand \index{Optimizations}
+\begin_inset LatexCommand index
+name "Optimizations"
\begin_layout Subsection
Sub-expression Elimination
\begin_layout Subsection
Sub-expression Elimination
-\begin_inset LatexCommand \index{Subexpression elimination}
+\begin_inset LatexCommand index
+name "Subexpression elimination"
\begin_layout Subsection
Dead-Code Elimination
\begin_layout Subsection
Dead-Code Elimination
-\begin_inset LatexCommand \index{Dead-code elimination}
+\begin_inset LatexCommand index
+name "Dead-code elimination"
\begin_layout Subsection
Copy-Propagation
\begin_layout Subsection
Copy-Propagation
-\begin_inset LatexCommand \index{Copy propagation}
+\begin_inset LatexCommand index
+name "Copy propagation"
\begin_layout Subsection
Loop Optimizations
\begin_layout Subsection
Loop Optimizations
-\begin_inset LatexCommand \index{Loop optimization}
+\begin_inset LatexCommand index
+name "Loop optimization"
-\begin_inset LatexCommand \label{sub:Loop-Optimizations}
+\begin_inset LatexCommand label
+name "sub:Loop-Optimizations"
\emph on
loop invariant
\emph default
\emph on
loop invariant
\emph default
\emph default
of loop induction variables.
In addition to the strength reduction the optimizer marks the induction
variables and the register allocator tries to keep the induction variables
in registers for the duration of the loop.
Because of this preference of the register allocator
\emph default
of loop induction variables.
In addition to the strength reduction the optimizer marks the induction
variables and the register allocator tries to keep the induction variables
in registers for the duration of the loop.
Because of this preference of the register allocator
-\begin_inset LatexCommand \index{Register allocation}
+\begin_inset LatexCommand index
+name "Register allocation"
\end_inset
, loop induction optimization causes an increase in register pressure, which
may cause unwanted spilling of other temporary variables into the stack
\end_inset
, loop induction optimization causes an increase in register pressure, which
may cause unwanted spilling of other temporary variables into the stack
-\begin_inset LatexCommand \index{stack}
+\begin_inset LatexCommand index
+name "stack"
-noinduction option) or for a given function only using #pragma\InsetSpace ~
noinduction
-noinduction option) or for a given function only using #pragma\InsetSpace ~
noinduction
-\begin_inset LatexCommand \index{\#pragma noinduction}
+\begin_inset LatexCommand index
+name "\\#pragma noinduction"
\newline
Strength Reduction
\newline
Strength Reduction
-\begin_inset LatexCommand \index{Strength reduction}
+\begin_inset LatexCommand index
+name "Strength reduction"
\begin_layout Standard
The more expensive multiplication
\begin_layout Standard
The more expensive multiplication
-\begin_inset LatexCommand \index{Multiplication}
+\begin_inset LatexCommand index
+name "Multiplication"
\begin_layout Subsection
Loop Reversing
\begin_layout Subsection
Loop Reversing
-\begin_inset LatexCommand \index{Loop reversing}
+\begin_inset LatexCommand index
+name "Loop reversing"
\begin_layout Standard
Note the subexpressions
\begin_layout Standard
Note the subexpressions
-\begin_inset LatexCommand \index{Subexpression}
+\begin_inset LatexCommand index
+name "Subexpression"
\begin_layout Subsection
'switch' Statements
\begin_layout Subsection
'switch' Statements
-\begin_inset LatexCommand \label{sub:'switch'-Statements}
+\begin_inset LatexCommand label
+name "sub:'switch'-Statements"
-\begin_inset LatexCommand \index{switch statement}
+\begin_inset LatexCommand index
+name "switch statement"
\begin_layout Standard
SDCC can optimize switch statements to jump tables
\begin_layout Standard
SDCC can optimize switch statements to jump tables
-\begin_inset LatexCommand \index{jump tables}
+\begin_inset LatexCommand index
+name "jump tables"
\begin_layout Standard
The pragma nojtbound
\begin_layout Standard
The pragma nojtbound
-\begin_inset LatexCommand \index{\#pragma nojtbound}
+\begin_inset LatexCommand index
+name "\\#pragma nojtbound"
aries.
It has no effect if a default label is supplied.
Use of this pragma is dangerous: if the switch
aries.
It has no effect if a default label is supplied.
Use of this pragma is dangerous: if the switch
-\begin_inset LatexCommand \index{switch statement}
+\begin_inset LatexCommand index
+name "switch statement"
\begin_layout Subsection
Bit-shifting Operations
\begin_layout Subsection
Bit-shifting Operations
-\begin_inset LatexCommand \index{Bit shifting}
+\begin_inset LatexCommand index
+name "Bit shifting"
\begin_layout Subsection
Bit-rotation
\begin_layout Subsection
Bit-rotation
-\begin_inset LatexCommand \index{Bit rotation}
+\begin_inset LatexCommand index
+name "Bit rotation"
\begin_layout Standard
A special case of the bit-shift operation is bit rotation
\begin_layout Standard
A special case of the bit-shift operation is bit rotation
-\begin_inset LatexCommand \index{rotating bits}
+\begin_inset LatexCommand index
+name "rotating bits"
-i = ((i << 1) | (i >> 7));
+i = ((i << 1) | (i >> 7));
\newline
\family typewriter
\newline
\family typewriter
\begin_layout Standard
Other special cases of the bit-shift operations are nibble or byte swapping
\begin_layout Standard
Other special cases of the bit-shift operations are nibble or byte swapping
-\begin_inset LatexCommand \index{swapping nibbles/bytes}
+\begin_inset LatexCommand index
+name "swapping nibbles/bytes"
-i = ((i << 4) | (i >> 4));
+i = ((i << 4) | (i >> 4));
\newline
\family typewriter
\newline
\family typewriter
\begin_layout Standard
and generates a swap instruction for the nibble swapping
\begin_layout Standard
and generates a swap instruction for the nibble swapping
-\begin_inset LatexCommand \index{Nibble swapping}
+\begin_inset LatexCommand index
+name "Nibble swapping"
\end_inset
or move instructions for the byte swapping
\end_inset
or move instructions for the byte swapping
-\begin_inset LatexCommand \index{Byte swapping}
+\begin_inset LatexCommand index
+name "Byte swapping"
-\begin_inset LatexCommand \index{DPTR}
+\begin_inset LatexCommand index
+name "DPTR"
--datapointer
-\emph on
-
-\emph default
-so little-endian is the more efficient byte order.
+-datapointer so little-endian is the more efficient byte order.
-\begin_inset LatexCommand \index{little-endian}
+\begin_inset LatexCommand index
+name "little-endian"
-\begin_inset LatexCommand \index{Endianness}
+\begin_inset LatexCommand index
+name "Endianness"
\begin_layout Subsection
Highest Order Bit
\begin_layout Subsection
Highest Order Bit
-\begin_inset LatexCommand \index{Highest Order Bit}
+\begin_inset LatexCommand index
+name "Highest Order Bit"
\end_inset
/ Any Order Bit
\end_inset
/ Any Order Bit
-\begin_inset LatexCommand \index{Any Order Bit}
+\begin_inset LatexCommand index
+name "Any Order Bit"
\begin_layout Subsection
Higher Order Byte
\begin_layout Subsection
Higher Order Byte
-\begin_inset LatexCommand \index{Higher Order Byte}
+\begin_inset LatexCommand index
+name "Higher Order Byte"
\end_inset
/ Higher Order Word
\end_inset
/ Higher Order Word
-\begin_inset LatexCommand \index{Higher Order Word}
+\begin_inset LatexCommand index
+name "Higher Order Word"
\begin_layout Subsection
Peephole Optimizer
\begin_layout Subsection
Peephole Optimizer
-\begin_inset LatexCommand \label{sub:Peephole-Optimizer}
+\begin_inset LatexCommand label
+name "sub:Peephole-Optimizer"
-\begin_inset LatexCommand \index{Peephole optimizer}
+\begin_inset LatexCommand index
+name "Peephole optimizer"
-\begin_inset LatexCommand \index{-\/-peep-file}
+\begin_inset LatexCommand index
+name "-\\/-peep-file"
\begin_layout Standard
The above rule will change the following assembly
\begin_layout Standard
The above rule will change the following assembly
-\begin_inset LatexCommand \index{Assembler routines}
+\begin_inset LatexCommand index
+name "Assembler routines"
).
E.g.
some variants of the 8051 MCU
).
E.g.
some variants of the 8051 MCU
-\begin_inset LatexCommand \index{MCS51 variants}
+\begin_inset LatexCommand index
+name "MCS51 variants"
\emph default
-acall-ajmp
\emph default
-acall-ajmp
-\begin_inset LatexCommand \index{-\/-acall-ajmp}
+\begin_inset LatexCommand index
+name "-\\/-acall-ajmp"
Currently implemented are
\emph on
labelInRange, labelRefCount, labelIsReturnOnly, operandsNotSame, xramMovcOption,
Currently implemented are
\emph on
labelInRange, labelRefCount, labelIsReturnOnly, operandsNotSame, xramMovcOption,
- 24bitMode, portIsDS390, 24bitModeAndPortDS390
+ 24bitMode, portIsDS390, 24bitModeAndPortDS390
\emph default
.
\end_layout
\emph default
.
\end_layout
\begin_layout Section
ANSI-Compliance
\begin_layout Section
ANSI-Compliance
-\begin_inset LatexCommand \index{ANSI-compliance}
+\begin_inset LatexCommand index
+name "ANSI-compliance"
-\begin_inset LatexCommand \label{sub:ANSI-Compliance}
+\begin_inset LatexCommand label
+name "sub:ANSI-Compliance"
ISO/IEC 9899 - Programming languages - C
\emph default
should be available at:
ISO/IEC 9899 - Programming languages - C
\emph default
should be available at:
-\begin_inset LatexCommand \url{http://www.open-std.org/jtc1/sc22/wg14/www/standards.html#9899}
+\begin_inset LatexCommand url
+target "http://www.open-std.org/jtc1/sc22/wg14/www/standards.html#9899"
\begin_layout Itemize
functions are not reentrant
\begin_layout Itemize
functions are not reentrant
-\begin_inset LatexCommand \index{reentrant}
+\begin_inset LatexCommand index
+name "reentrant"
-\begin_inset LatexCommand \index{-\/-stack-auto}
+\begin_inset LatexCommand index
+name "-\\/-stack-auto"
\begin_layout Itemize
structures
\begin_layout Itemize
structures
-\begin_inset LatexCommand \index{struct}
+\begin_inset LatexCommand index
+name "struct"
-\begin_inset LatexCommand \index{union}
+\begin_inset LatexCommand index
+name "union"
\end_inset
cannot be assigned values directly, cannot be passed as function parameters
or assigned to each other and cannot be a return value
\end_inset
cannot be assigned values directly, cannot be passed as function parameters
or assigned to each other and cannot be a return value
-\begin_inset LatexCommand \index{return value}
+\begin_inset LatexCommand index
+name "return value"
+
+\family typewriter
+s foo1 (
- s parms) /* invalid in SDCC although allowed in ANSI */
+
+\family typewriter
+s parms) /* invalid in SDCC although allowed in ANSI */
\end_deeper
\begin_layout Itemize
'long long
\end_deeper
\begin_layout Itemize
'long long
-\begin_inset LatexCommand \index{long long (not supported)}
+\begin_inset LatexCommand index
+name "long long (not supported)"
\end_inset
' (64 bit integers
\end_inset
' (64 bit integers
-\begin_inset LatexCommand \index{int (64 bit) (not supported)}
+\begin_inset LatexCommand index
+name "int (64 bit) (not supported)"
\begin_layout Itemize
'double
\begin_layout Itemize
'double
-\begin_inset LatexCommand \index{double (not supported)}
+\begin_inset LatexCommand index
+name "double (not supported)"
\end_inset
' precision floating point
\end_inset
' precision floating point
-\begin_inset LatexCommand \index{Floating point support}
+\begin_inset LatexCommand index
+name "Floating point support"
\begin_layout Itemize
Old K&R style
\begin_layout Itemize
Old K&R style
-\begin_inset LatexCommand \index{K\&R style}
+\begin_inset LatexCommand index
+name "K\\&R style"
- i=0; i<10; i++) /* is invalid in SDCC although allowed in C99 */
+
+\family typewriter
+i=0; i<10; i++) /* is invalid in SDCC although allowed in C99 */
\family typewriter
\series bold
inline
\family typewriter
\series bold
inline
-\begin_inset LatexCommand \index{inline (not supported)}
+\begin_inset LatexCommand index
+name "inline (not supported)"
- int increment (int a) { return a+1; } /* inlines the increment without
- function call overhead */
+
+\family typewriter
+int increment (int a) { return a+1; } /* inlines the increment without function
+ call overhead */
+int *
+\family default
+
+\family typewriter
-\begin_inset LatexCommand \index{inline (not supported)}
+\begin_inset LatexCommand index
+name "inline (not supported)"
- p; /* accepted but ignored */
+
+\family typewriter
+p; /* accepted but ignored */
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand index
+name "-\\/-std-c89"
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-std-c99}
+\begin_inset LatexCommand index
+name "-\\/-std-c99"
'_naked'.
Compliant equivalents of these keywords are always available in a form
that begin with two underscores
'_naked'.
Compliant equivalents of these keywords are always available in a form
that begin with two underscores
-\begin_inset LatexCommand \index{\_\_ (prefix for extended keywords)}
+\begin_inset LatexCommand index
+name "\\_\\_ (prefix for extended keywords)"
\begin_layout Itemize
Integer promotion of variable arguments is not performed if the argument
\begin_layout Itemize
Integer promotion of variable arguments is not performed if the argument
- is explicitly taypecasted unless the
+ is explicitly taypecasted unless the
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-std-c89}
+\begin_inset LatexCommand index
+name "-\\/-std-c89"
\begin_inset ERT
status collapsed
\begin_inset ERT
status collapsed
-\begin_inset LatexCommand \index{-\/-std-c99}
+\begin_inset LatexCommand index
+name "-\\/-std-c99"
\end_deeper
\begin_layout Section
Cyclomatic Complexity
\end_deeper
\begin_layout Section
Cyclomatic Complexity
-\begin_inset LatexCommand \index{Cyclomatic complexity}
+\begin_inset LatexCommand index
+name "Cyclomatic complexity"
variables defined by the compiler that still survive after all the optimization
s.
Live range analysis
variables defined by the compiler that still survive after all the optimization
s.
Live range analysis
-\begin_inset LatexCommand \index{Live range analysis}
+\begin_inset LatexCommand index
+name "Live range analysis"
\begin_layout Standard
More information is available on SDCC Wiki
\begin_layout Standard
More information is available on SDCC Wiki
-\begin_inset LatexCommand \index{wiki}
+\begin_inset LatexCommand index
+name "wiki"
\end_inset
(preliminary link
\end_inset
(preliminary link
-\begin_inset LatexCommand \url{http://sdcc.wiki.sourceforge.net/SDCC+internals+and+porting}
+\begin_inset LatexCommand url
+target "http://sdcc.wiki.sourceforge.net/SDCC+internals+and+porting"
\end_inset
) and in the thread
\end_inset
) and in the thread
-\begin_inset LatexCommand \url{http://sf.net/mailarchive/message.php?msg_id=13954144}
+\begin_inset LatexCommand url
+target "http://sf.net/mailarchive/message.php?msg_id=13954144"
\begin_layout Chapter
Compiler internals
\begin_layout Chapter
Compiler internals
-\begin_inset LatexCommand \index{Compiler internals}
+\begin_inset LatexCommand index
+name "Compiler internals"
\begin_layout Section
The anatomy of the compiler
\begin_layout Section
The anatomy of the compiler
-\begin_inset LatexCommand \label{sub:The-anatomy-of}
+\begin_inset LatexCommand label
+name "sub:The-anatomy-of"
\shape italic
This is an excerpt from an article published in Circuit Cellar Magazine
\shape italic
This is an excerpt from an article published in Circuit Cellar Magazine
August 2000
\series default
.
August 2000
\series default
.
\begin_layout Paragraph*
Parsing
\begin_layout Paragraph*
Parsing
-\begin_inset LatexCommand \index{Parsing}
+\begin_inset LatexCommand index
+name "Parsing"
\begin_layout Standard
Parsing the input source file and creating an AST (Annotated Syntax Tree
\begin_layout Standard
Parsing the input source file and creating an AST (Annotated Syntax Tree
-\begin_inset LatexCommand \index{Annotated syntax tree}
+\begin_inset LatexCommand index
+name "Annotated syntax tree"
\begin_layout Paragraph*
Generating iCode
\begin_layout Paragraph*
Generating iCode
-\begin_inset LatexCommand \index{iCode}
+\begin_inset LatexCommand index
+name "iCode"
\begin_layout Paragraph*
Optimizations
\begin_layout Paragraph*
Optimizations
-\begin_inset LatexCommand \index{Optimizations}
+\begin_inset LatexCommand index
+name "Optimizations"
\begin_layout Paragraph*
Live range analysis
\begin_layout Paragraph*
Live range analysis
-\begin_inset LatexCommand \index{Live range analysis}
+\begin_inset LatexCommand index
+name "Live range analysis"
\begin_layout Paragraph*
Register Allocation
\begin_layout Paragraph*
Register Allocation
-\begin_inset LatexCommand \index{Register allocation}
+\begin_inset LatexCommand index
+name "Register allocation"
\begin_layout Standard
Figure II gives a table of iCode
\begin_layout Standard
Figure II gives a table of iCode
-\begin_inset LatexCommand \index{iCode}
+\begin_inset LatexCommand index
+name "iCode"
-\begin_inset LatexCommand \index{iCode}
+\begin_inset LatexCommand index
+name "iCode"
\shape slanted
\size footnotesize
see f.e.
\shape slanted
\size footnotesize
see f.e.
gen51Code()
\family default
gen51Code()
\family default
+\shape default
+
+\shape slanted
+in
+\shape default
+
src/mcs51/gen.c
\end_layout
src/mcs51/gen.c
\end_layout
\begin_layout Paragraph*
ICode Example
\begin_layout Paragraph*
ICode Example
-\begin_inset LatexCommand \index{iCode}
+\begin_inset LatexCommand index
+name "iCode"
Note that local variables and parameters are replaced by compiler generated
temporaries.
Live ranges
Note that local variables and parameters are replaced by compiler generated
temporaries.
Live ranges
-\begin_inset LatexCommand \index{Live range analysis}
+\begin_inset LatexCommand index
+name "Live range analysis"
\end_inset
are computed only for temporaries (i.e.
live ranges are not computed for global variables).
Registers
\end_inset
are computed only for temporaries (i.e.
live ranges are not computed for global variables).
Registers
-\begin_inset LatexCommand \index{Register allocation}
+\begin_inset LatexCommand index
+name "Register allocation"
\newline
There are several
loop optimizations
\newline
There are several
loop optimizations
-\begin_inset LatexCommand \index{Loop optimization}
+\begin_inset LatexCommand index
+name "Loop optimization"
\end_inset
performed by the compiler.
It can detect induction variables iTemp21(i) and iTemp23(j).
Also note the compiler does selective strength reduction
\end_inset
performed by the compiler.
It can detect induction variables iTemp21(i) and iTemp23(j).
Also note the compiler does selective strength reduction
-\begin_inset LatexCommand \index{Strength reduction}
+\begin_inset LatexCommand index
+name "Strength reduction"
changed to addition, a new temporary iTemp17 is allocated and assigned
a initial value, a constant 3 is then added for each iteration of the loop.
The compiler does not change the multiplication
changed to addition, a new temporary iTemp17 is allocated and assigned
a initial value, a constant 3 is then added for each iteration of the loop.
The compiler does not change the multiplication
-\begin_inset LatexCommand \index{Multiplication}
+\begin_inset LatexCommand index
+name "Multiplication"
\newline
Note the dead code elimination
\newline
Note the dead code elimination
-\begin_inset LatexCommand \index{Dead-code elimination}
+\begin_inset LatexCommand index
+name "Dead-code elimination"
\begin_layout Standard
Successors are basic blocks
\begin_layout Standard
Successors are basic blocks
-\begin_inset LatexCommand \index{Basic blocks}
+\begin_inset LatexCommand index
+name "Basic blocks"
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-\begin_inset LatexCommand \url{http://sdcc.sourceforge.net/#Who}
+\begin_inset LatexCommand url
+target "http://sdcc.sourceforge.net/#Who"
\emph on
Thanks to Sourceforge
\emph on
Thanks to Sourceforge
-\begin_inset LatexCommand \url{http://www.sf.net}
+\begin_inset LatexCommand url
+target "http://www.sf.net"
\begin_layout Standard
All product names mentioned herein may be trademarks
\begin_layout Standard
All product names mentioned herein may be trademarks
-\begin_inset LatexCommand \index{Trademarks}
+\begin_inset LatexCommand index
+name "Trademarks"
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-\begin_inset LatexCommand \printindex{}
+\begin_inset LatexCommand printindex
-#LyX 1.4.4 created this file. For more info see http://www.lyx.org/
-\lyxformat 245
+#LyX 1.5.7 created this file. For more info see http://www.lyx.org/
+\lyxformat 276
\begin_document
\begin_header
\textclass article
\begin_document
\begin_header
\textclass article
\end_preamble
\language english
\inputencoding auto
\end_preamble
\language english
\inputencoding auto
+\font_roman times
+\font_sans default
+\font_typewriter default
+\font_default_family default
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\papersize default
\use_geometry false
\use_amsmath 1
\graphics default
\paperfontsize default
\spacing single
\papersize default
\use_geometry false
\use_amsmath 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\papersides 1
\paperpagestyle default
\tracking_changes false
\papersides 1
\paperpagestyle default
\tracking_changes false
+\output_changes false
+\author ""