Ignore:
Timestamp:
Jan 21, 2018, 12:10:09 AM (6 years ago)
Author:
coas-nagasima
Message:

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

Location:
EcnlProtoTool/trunk/tcc-0.9.27
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/tcc-0.9.27/tcc-doc.html

    • Property svn:keywords deleted
    r279 r331  
    1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
    2 <html>
    3 <!-- Created on February 15, 2013 by texi2html 1.82
    4 texi2html was written by:
    5             Lionel Cons <Lionel.Cons@cern.ch> (original author)
    6             Karl Berry  <karl@freefriends.org>
    7             Olaf Bachmann <obachman@mathematik.uni-kl.de>
    8             and many others.
    9 Maintained by: Many creative people.
    10 Send bugs and suggestions to <texi2html-bug@nongnu.org>
     1<HTML>
     2<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     3<!-- Created on December, 17  2017 by texi2html 1.64 -->
     4<!--
     5Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
     6                        Karl Berry  <karl@freefriends.org>
     7                        Olaf Bachmann <obachman@mathematik.uni-kl.de>
     8                        and many others.
     9Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
     10Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
     11 
    1112-->
    12 <head>
    13 <title>Tiny C Compiler Reference Documentation</title>
    14 
    15 <meta name="description" content="Tiny C Compiler Reference Documentation">
    16 <meta name="keywords" content="Tiny C Compiler Reference Documentation">
    17 <meta name="resource-type" content="document">
    18 <meta name="distribution" content="global">
    19 <meta name="Generator" content="texi2html 1.82">
    20 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    21 <style type="text/css">
    22 <!--
    23 a.summary-letter {text-decoration: none}
    24 blockquote.smallquotation {font-size: smaller}
    25 pre.display {font-family: serif}
    26 pre.format {font-family: serif}
    27 pre.menu-comment {font-family: serif}
    28 pre.menu-preformatted {font-family: serif}
    29 pre.smalldisplay {font-family: serif; font-size: smaller}
    30 pre.smallexample {font-size: smaller}
    31 pre.smallformat {font-family: serif; font-size: smaller}
    32 pre.smalllisp {font-size: smaller}
    33 span.roman {font-family:serif; font-weight:normal;}
    34 span.sansserif {font-family:sans-serif; font-weight:normal;}
    35 ul.toc {list-style: none}
    36 -->
    37 </style>
    38 
    39 
    40 </head>
    41 
    42 <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
    43 
    44 <a name="Top"></a>
    45 <table cellpadding="1" cellspacing="1" border="0">
    46 <tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    47 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    48 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    49 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    50 </tr></table>
    51 <a name="Tiny-C-Compiler-Reference-Documentation"></a>
    52 <h1 class="settitle">Tiny C Compiler Reference Documentation</h1>
    53 
    54 <p>This manual documents version 0.9.26 of the Tiny C Compiler.
    55 </p>
    56 <table class="menu" border="0" cellspacing="0">
    57 <tr><td align="left" valign="top"><a href="#Introduction">1. Introduction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                Introduction to tcc.
    58 </td></tr>
    59 <tr><td align="left" valign="top"><a href="#Invoke">2. Command line invocation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      Invocation of tcc (command line, options).
    60 </td></tr>
    61 <tr><td align="left" valign="top"><a href="#Clang">3. C language support</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       ANSI C and extensions.
    62 </td></tr>
    63 <tr><td align="left" valign="top"><a href="#asm">4. TinyCC Assembler</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                         Assembler syntax.
    64 </td></tr>
    65 <tr><td align="left" valign="top"><a href="#linker">5. TinyCC Linker</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      Output file generation and supported targets.
    66 </td></tr>
    67 <tr><td align="left" valign="top"><a href="#Bounds">6. TinyCC Memory and Bound checks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      Automatic bounds-checking of C code.
    68 </td></tr>
    69 <tr><td align="left" valign="top"><a href="#Libtcc">7. The <code>libtcc</code> library</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                      The libtcc library.
    70 </td></tr>
    71 <tr><td align="left" valign="top"><a href="#devel">8. Developer&rsquo;s guide</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">                       Guide for Developers.
    72 </td></tr>
    73 </table>
    74 
    75 
    76 <hr size="1">
    77 <a name="Introduction"></a>
    78 <table cellpadding="1" cellspacing="1" border="0">
    79 <tr><td valign="middle" align="left">[<a href="#Top" title="Previous section in reading order"> &lt; </a>]</td>
    80 <td valign="middle" align="left">[<a href="#Invoke" title="Next section in reading order"> &gt; </a>]</td>
    81 <td valign="middle" align="left"> &nbsp; </td>
    82 <td valign="middle" align="left">[<a href="#Top" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    83 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    84 <td valign="middle" align="left">[<a href="#Invoke" title="Next chapter"> &gt;&gt; </a>]</td>
    85 <td valign="middle" align="left"> &nbsp; </td>
    86 <td valign="middle" align="left"> &nbsp; </td>
    87 <td valign="middle" align="left"> &nbsp; </td>
    88 <td valign="middle" align="left"> &nbsp; </td>
    89 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    90 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    91 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    92 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    93 </tr></table>
    94 <a name="Introduction-1"></a>
    95 <h1 class="chapter">1. Introduction</h1>
    96 
    97 <p>TinyCC (aka TCC) is a small but hyper fast C compiler. Unlike other C
     13<HEAD>
     14<TITLE>Tiny C Compiler Reference Documentation: </TITLE>
     15
     16<META NAME="description" CONTENT="Tiny C Compiler Reference Documentation: ">
     17<META NAME="keywords" CONTENT="Tiny C Compiler Reference Documentation: ">
     18<META NAME="resource-type" CONTENT="document">
     19<META NAME="distribution" CONTENT="global">
     20<META NAME="Generator" CONTENT="texi2html 1.64">
     21
     22</HEAD>
     23
     24<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
     25
     26<A NAME="SEC_Top"></A>
     27<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     28<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     29<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     30<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     31<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     32</TR></TABLE>
     33<H1>Tiny C Compiler Reference Documentation</H1></P><P>
     34
     35This manual documents version 0.9.27
     36 of the Tiny C Compiler.
     37</P><P>
     38
     39<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
     40<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="tcc-doc.html#SEC1">1. Introduction</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Introduction to tcc.</TD></TR>
     41<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="tcc-doc.html#SEC2">2. Command line invocation</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Invocation of tcc (command line, options).</TD></TR>
     42<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="tcc-doc.html#SEC5">3. C language support</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">ANSI C and extensions.</TD></TR>
     43<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="tcc-doc.html#SEC10">4. TinyCC Assembler</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Assembler syntax.</TD></TR>
     44<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="tcc-doc.html#SEC16">5. TinyCC Linker</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Output file generation and supported targets.</TD></TR>
     45<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="tcc-doc.html#SEC21">6. TinyCC Memory and Bound checks</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Automatic bounds-checking of C code.</TD></TR>
     46<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="tcc-doc.html#SEC22">7. The <CODE>libtcc</CODE> library</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">The libtcc library.</TD></TR>
     47<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="tcc-doc.html#SEC23">8. Developer's guide</A></TD><TD>&nbsp;&nbsp;</TD><TD ALIGN="left" VALIGN="TOP">Guide for Developers.</TD></TR>
     48</TABLE></BLOCKQUOTE>
     49<P>
     50
     51<HR SIZE=1>
     52<A NAME="SEC1"></A>
     53<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     54<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> &lt; </A>]</TD>
     55<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC2"> &gt; </A>]</TD>
     56<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
     57<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     58<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC2"> &gt;&gt; </A>]</TD>
     59<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     60<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     61<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     62<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     63</TR></TABLE>
     64<A NAME="Introduction"></A>
     65<H1> 1. Introduction </H1>
     66<!--docid::SEC1::-->
     67<P>
     68
     69TinyCC (aka TCC) is a small but hyper fast C compiler. Unlike other C
    9870compilers, it is meant to be self-relying: you do not need an
    9971external assembler or linker because TCC does that for you.
    100 </p>
    101 <p>TCC compiles so <em>fast</em> that even for big projects <code>Makefile</code>s may
     72</P><P>
     73
     74TCC compiles so <EM>fast</EM> that even for big projects <CODE>Makefile</CODE>s may
    10275not be necessary.
    103 </p>
    104 <p>TCC not only supports ANSI C, but also most of the new ISO C99
     76</P><P>
     77
     78TCC not only supports ANSI C, but also most of the new ISO C99
    10579standard and many GNUC extensions including inline assembly.
    106 </p>
    107 <p>TCC can also be used to make <em>C scripts</em>, i.e. pieces of C source
     80</P><P>
     81
     82TCC can also be used to make <EM>C scripts</EM>, i.e. pieces of C source
    10883that you run as a Perl or Python script. Compilation is so fast that
    10984your script will be as fast as if it was an executable.
    110 </p>
    111 <p>TCC can also automatically generate memory and bound checks
    112 (see section <a href="#Bounds">TinyCC Memory and Bound checks</a>) while allowing all C pointers operations. TCC can do
     85</P><P>
     86
     87TCC can also automatically generate memory and bound checks
     88(see section <A HREF="tcc-doc.html#SEC21">6. TinyCC Memory and Bound checks</A>) while allowing all C pointers operations. TCC can do
    11389these checks even if non patched libraries are used.
    114 </p>
    115 <p>With <code>libtcc</code>, you can use TCC as a backend for dynamic code
    116 generation (see section <a href="#Libtcc">The <code>libtcc</code> library</a>).
    117 </p>
    118 <p>TCC mainly supports the i386 target on Linux and Windows. There are alpha
    119 ports for the ARM (<code>arm-tcc</code>) and the TMS320C67xx targets
    120 (<code>c67-tcc</code>). More information about the ARM port is available at
    121 <a href="http://lists.gnu.org/archive/html/tinycc-devel/2003-10/msg00044.html">http://lists.gnu.org/archive/html/tinycc-devel/2003-10/msg00044.html</a>.
    122 </p>
    123 <p>For usage on Windows, see also <a href="tcc-win32.txt">tcc-win32.txt</a>.
    124 </p>
    125 <hr size="6">
    126 <a name="Invoke"></a>
    127 <table cellpadding="1" cellspacing="1" border="0">
    128 <tr><td valign="middle" align="left">[<a href="#Introduction" title="Previous section in reading order"> &lt; </a>]</td>
    129 <td valign="middle" align="left">[<a href="#Quick-start" title="Next section in reading order"> &gt; </a>]</td>
    130 <td valign="middle" align="left"> &nbsp; </td>
    131 <td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    132 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    133 <td valign="middle" align="left">[<a href="#Clang" title="Next chapter"> &gt;&gt; </a>]</td>
    134 <td valign="middle" align="left"> &nbsp; </td>
    135 <td valign="middle" align="left"> &nbsp; </td>
    136 <td valign="middle" align="left"> &nbsp; </td>
    137 <td valign="middle" align="left"> &nbsp; </td>
    138 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    139 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    140 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    141 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    142 </tr></table>
    143 <a name="Command-line-invocation"></a>
    144 <h1 class="chapter">2. Command line invocation</h1>
    145 
    146 <hr size="6">
    147 <a name="Quick-start"></a>
    148 <table cellpadding="1" cellspacing="1" border="0">
    149 <tr><td valign="middle" align="left">[<a href="#Invoke" title="Previous section in reading order"> &lt; </a>]</td>
    150 <td valign="middle" align="left">[<a href="#Option-summary" title="Next section in reading order"> &gt; </a>]</td>
    151 <td valign="middle" align="left"> &nbsp; </td>
    152 <td valign="middle" align="left">[<a href="#Invoke" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    153 <td valign="middle" align="left">[<a href="#Invoke" title="Up section"> Up </a>]</td>
    154 <td valign="middle" align="left">[<a href="#Clang" title="Next chapter"> &gt;&gt; </a>]</td>
    155 <td valign="middle" align="left"> &nbsp; </td>
    156 <td valign="middle" align="left"> &nbsp; </td>
    157 <td valign="middle" align="left"> &nbsp; </td>
    158 <td valign="middle" align="left"> &nbsp; </td>
    159 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    160 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    161 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    162 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    163 </tr></table>
    164 <h2 class="section">2.1 Quick start</h2>
    165 
    166 <table><tr><td>&nbsp;</td><td><pre class="example">usage: tcc [options] [<var>infile1</var> <var>infile2</var>&hellip;] [&lsquo;<samp>-run</samp>&rsquo; <var>infile</var> <var>args</var>&hellip;]
    167 </pre></td></tr></table>
    168 
    169 <p>TCC options are a very much like gcc options. The main difference is that TCC
     90</P><P>
     91
     92With <CODE>libtcc</CODE>, you can use TCC as a backend for dynamic code
     93generation (see section <A HREF="tcc-doc.html#SEC22">7. The <CODE>libtcc</CODE> library</A>).
     94</P><P>
     95
     96TCC mainly supports the i386 target on Linux and Windows. There are alpha
     97ports for the ARM (<CODE>arm-tcc</CODE>) and the TMS320C67xx targets
     98(<CODE>c67-tcc</CODE>). More information about the ARM port is available at
     99<A HREF="http://lists.gnu.org/archive/html/tinycc-devel/2003-10/msg00044.html">http://lists.gnu.org/archive/html/tinycc-devel/2003-10/msg00044.html</A>.
     100</P><P>
     101
     102For usage on Windows, see also <A HREF="tcc-win32.txt">tcc-win32.txt</A>.
     103</P><P>
     104
     105<A NAME="Invoke"></A>
     106<HR SIZE="6">
     107<A NAME="SEC2"></A>
     108<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     109<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC1"> &lt; </A>]</TD>
     110<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC3"> &gt; </A>]</TD>
     111<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> &lt;&lt; </A>]</TD>
     112<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     113<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> &gt;&gt; </A>]</TD>
     114<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     115<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     116<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     117<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     118</TR></TABLE>
     119<H1> 2. Command line invocation </H1>
     120<!--docid::SEC2::-->
     121<P>
     122
     123<HR SIZE="6">
     124<A NAME="SEC3"></A>
     125<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     126<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC2"> &lt; </A>]</TD>
     127<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC4"> &gt; </A>]</TD>
     128<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC2"> &lt;&lt; </A>]</TD>
     129<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC2"> Up </A>]</TD>
     130<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> &gt;&gt; </A>]</TD>
     131<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     132<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     133<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     134<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     135</TR></TABLE>
     136<H2> 2.1 Quick start </H2>
     137<!--docid::SEC3::-->
     138<P>
     139
     140<TABLE><tr><td>&nbsp;</td><td class=example><pre>usage: tcc [options] [<VAR>infile1</VAR> <VAR>infile2</VAR><small>...</small>] [<SAMP>`-run'</SAMP> <VAR>infile</VAR> <VAR>args</VAR><small>...</small>]
     141</pre></td></tr></table></P><P>
     142
     143TCC options are a very much like gcc options. The main difference is that TCC
    170144can also execute directly the resulting program and give it runtime
    171145arguments.
    172 </p>
    173 <p>Here are some examples to understand the logic:
    174 </p>
    175 <dl compact="compact">
    176 <dt> <code>&lsquo;<samp>tcc -run a.c</samp>&rsquo;</code></dt>
    177 <dd><p>Compile &lsquo;<tt>a.c</tt>&rsquo; and execute it directly
    178 </p>
    179 </dd>
    180 <dt> <code>&lsquo;<samp>tcc -run a.c arg1</samp>&rsquo;</code></dt>
    181 <dd><p>Compile a.c and execute it directly. arg1 is given as first argument to
    182 the <code>main()</code> of a.c.
    183 </p>
    184 </dd>
    185 <dt> <code>&lsquo;<samp>tcc a.c -run b.c arg1</samp>&rsquo;</code></dt>
    186 <dd><p>Compile &lsquo;<tt>a.c</tt>&rsquo; and &lsquo;<tt>b.c</tt>&rsquo;, link them together and execute them. arg1 is given
    187 as first argument to the <code>main()</code> of the resulting program.
    188 </p>
    189 </dd>
    190 <dt> <code>&lsquo;<samp>tcc -o myprog a.c b.c</samp>&rsquo;</code></dt>
    191 <dd><p>Compile &lsquo;<tt>a.c</tt>&rsquo; and &lsquo;<tt>b.c</tt>&rsquo;, link them and generate the executable &lsquo;<tt>myprog</tt>&rsquo;.
    192 </p>
    193 </dd>
    194 <dt> <code>&lsquo;<samp>tcc -o myprog a.o b.o</samp>&rsquo;</code></dt>
    195 <dd><p>link &lsquo;<tt>a.o</tt>&rsquo; and &lsquo;<tt>b.o</tt>&rsquo; together and generate the executable &lsquo;<tt>myprog</tt>&rsquo;.
    196 </p>
    197 </dd>
    198 <dt> <code>&lsquo;<samp>tcc -c a.c</samp>&rsquo;</code></dt>
    199 <dd><p>Compile &lsquo;<tt>a.c</tt>&rsquo; and generate object file &lsquo;<tt>a.o</tt>&rsquo;.
    200 </p>
    201 </dd>
    202 <dt> <code>&lsquo;<samp>tcc -c asmfile.S</samp>&rsquo;</code></dt>
    203 <dd><p>Preprocess with C preprocess and assemble &lsquo;<tt>asmfile.S</tt>&rsquo; and generate
    204 object file &lsquo;<tt>asmfile.o</tt>&rsquo;.
    205 </p>
    206 </dd>
    207 <dt> <code>&lsquo;<samp>tcc -c asmfile.s</samp>&rsquo;</code></dt>
    208 <dd><p>Assemble (but not preprocess) &lsquo;<tt>asmfile.s</tt>&rsquo; and generate object file
    209 &lsquo;<tt>asmfile.o</tt>&rsquo;.
    210 </p>
    211 </dd>
    212 <dt> <code>&lsquo;<samp>tcc -r -o ab.o a.c b.c</samp>&rsquo;</code></dt>
    213 <dd><p>Compile &lsquo;<tt>a.c</tt>&rsquo; and &lsquo;<tt>b.c</tt>&rsquo;, link them together and generate the object file &lsquo;<tt>ab.o</tt>&rsquo;.
    214 </p>
    215 </dd>
    216 </dl>
    217 
    218 <p>Scripting:
    219 </p>
    220 <p>TCC can be invoked from <em>scripts</em>, just as shell scripts. You just
    221 need to add <code>#!/usr/local/bin/tcc -run</code> at the start of your C source:
    222 </p>
    223 <table><tr><td>&nbsp;</td><td><pre class="example">#!/usr/local/bin/tcc -run
    224 #include &lt;stdio.h&gt;
     146</P><P>
     147
     148Here are some examples to understand the logic:
     149</P><P>
     150
     151<DL COMPACT>
     152<DT><CODE><SAMP>`tcc -run a.c'</SAMP></CODE>
     153<DD>Compile <TT>`a.c'</TT> and execute it directly
     154<P>
     155
     156<DT><CODE><SAMP>`tcc -run a.c arg1'</SAMP></CODE>
     157<DD>Compile a.c and execute it directly. arg1 is given as first argument to
     158the <CODE>main()</CODE> of a.c.
     159<P>
     160
     161<DT><CODE><SAMP>`tcc a.c -run b.c arg1'</SAMP></CODE>
     162<DD>Compile <TT>`a.c'</TT> and <TT>`b.c'</TT>, link them together and execute them. arg1 is given
     163as first argument to the <CODE>main()</CODE> of the resulting program.
     164<P>
     165
     166<DT><CODE><SAMP>`tcc -o myprog a.c b.c'</SAMP></CODE>
     167<DD>Compile <TT>`a.c'</TT> and <TT>`b.c'</TT>, link them and generate the executable <TT>`myprog'</TT>.
     168<P>
     169
     170<DT><CODE><SAMP>`tcc -o myprog a.o b.o'</SAMP></CODE>
     171<DD>link <TT>`a.o'</TT> and <TT>`b.o'</TT> together and generate the executable <TT>`myprog'</TT>.
     172<P>
     173
     174<DT><CODE><SAMP>`tcc -c a.c'</SAMP></CODE>
     175<DD>Compile <TT>`a.c'</TT> and generate object file <TT>`a.o'</TT>.
     176<P>
     177
     178<DT><CODE><SAMP>`tcc -c asmfile.S'</SAMP></CODE>
     179<DD>Preprocess with C preprocess and assemble <TT>`asmfile.S'</TT> and generate
     180object file <TT>`asmfile.o'</TT>.
     181<P>
     182
     183<DT><CODE><SAMP>`tcc -c asmfile.s'</SAMP></CODE>
     184<DD>Assemble (but not preprocess) <TT>`asmfile.s'</TT> and generate object file
     185<TT>`asmfile.o'</TT>.
     186<P>
     187
     188<DT><CODE><SAMP>`tcc -r -o ab.o a.c b.c'</SAMP></CODE>
     189<DD>Compile <TT>`a.c'</TT> and <TT>`b.c'</TT>, link them together and generate the object file <TT>`ab.o'</TT>.
     190<P>
     191
     192</DL>
     193<P>
     194
     195Scripting:
     196</P><P>
     197
     198TCC can be invoked from <EM>scripts</EM>, just as shell scripts. You just
     199need to add <CODE>#!/usr/local/bin/tcc -run</CODE> at the start of your C source:
     200</P><P>
     201
     202<TABLE><tr><td>&nbsp;</td><td class=example><pre>#!/usr/local/bin/tcc -run
     203#include &#60;stdio.h&#62;
    225204
    226205int main()
    227206{
    228     printf(&quot;Hello World\n&quot;);
     207    printf("Hello World\n");
    229208    return 0;
    230209}
    231 </pre></td></tr></table>
    232 
    233 <p>TCC can read C source code from <em>standard input</em> when &lsquo;<samp>-</samp>&rsquo; is used in
    234 place of &lsquo;<samp>infile</samp>&rsquo;. Example:
    235 </p>
    236 <table><tr><td>&nbsp;</td><td><pre class="example">echo 'main(){puts(&quot;hello&quot;);}' | tcc -run -
    237 </pre></td></tr></table>
    238 
    239 <hr size="6">
    240 <a name="Option-summary"></a>
    241 <table cellpadding="1" cellspacing="1" border="0">
    242 <tr><td valign="middle" align="left">[<a href="#Quick-start" title="Previous section in reading order"> &lt; </a>]</td>
    243 <td valign="middle" align="left">[<a href="#Clang" title="Next section in reading order"> &gt; </a>]</td>
    244 <td valign="middle" align="left"> &nbsp; </td>
    245 <td valign="middle" align="left">[<a href="#Invoke" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    246 <td valign="middle" align="left">[<a href="#Invoke" title="Up section"> Up </a>]</td>
    247 <td valign="middle" align="left">[<a href="#Clang" title="Next chapter"> &gt;&gt; </a>]</td>
    248 <td valign="middle" align="left"> &nbsp; </td>
    249 <td valign="middle" align="left"> &nbsp; </td>
    250 <td valign="middle" align="left"> &nbsp; </td>
    251 <td valign="middle" align="left"> &nbsp; </td>
    252 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    253 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    254 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    255 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    256 </tr></table>
    257 <h2 class="section">2.2 Option summary</h2>
    258 
    259 <p>General Options:
    260 </p>
    261 <dl compact="compact">
    262 <dt> &lsquo;<samp>-c</samp>&rsquo;</dt>
    263 <dd><p>Generate an object file.
    264 </p>
    265 </dd>
    266 <dt> &lsquo;<samp>-o outfile</samp>&rsquo;</dt>
    267 <dd><p>Put object file, executable, or dll into output file &lsquo;<tt>outfile</tt>&rsquo;.
    268 </p>
    269 </dd>
    270 <dt> &lsquo;<samp>-run source [args...]</samp>&rsquo;</dt>
    271 <dd><p>Compile file <var>source</var> and run it with the command line arguments
    272 <var>args</var>. In order to be able to give more than one argument to a
    273 script, several TCC options can be given <em>after</em> the
    274 &lsquo;<samp>-run</samp>&rsquo; option, separated by spaces:
    275 </p><table><tr><td>&nbsp;</td><td><pre class="example">tcc &quot;-run -L/usr/X11R6/lib -lX11&quot; ex4.c
    276 </pre></td></tr></table>
    277 <p>In a script, it gives the following header:
    278 </p><table><tr><td>&nbsp;</td><td><pre class="example">#!/usr/local/bin/tcc -run -L/usr/X11R6/lib -lX11
    279 </pre></td></tr></table>
    280 
    281 </dd>
    282 <dt> &lsquo;<samp>-dumpversion</samp>&rsquo;</dt>
    283 <dd><p>Print only the compiler version and nothing else.
    284 </p>
    285 </dd>
    286 <dt> &lsquo;<samp>-v</samp>&rsquo;</dt>
    287 <dd><p>Display TCC version.
    288 </p>
    289 </dd>
    290 <dt> &lsquo;<samp>-vv</samp>&rsquo;</dt>
    291 <dd><p>Show included files.  As sole argument, print search dirs (as below).
    292 </p>
    293 </dd>
    294 <dt> &lsquo;<samp>-bench</samp>&rsquo;</dt>
    295 <dd><p>Display compilation statistics.
    296 </p>
    297 </dd>
    298 <dt> &lsquo;<samp>-print-search-dirs</samp>&rsquo;</dt>
    299 <dd><p>Print the configured installation directory and a list of library
     210</pre></td></tr></table></P><P>
     211
     212TCC can read C source code from <EM>standard input</EM> when <SAMP>`-'</SAMP> is used in
     213place of <SAMP>`infile'</SAMP>. Example:
     214</P><P>
     215
     216<TABLE><tr><td>&nbsp;</td><td class=example><pre>echo 'main(){puts("hello");}' | tcc -run -
     217</pre></td></tr></table></P><P>
     218
     219<HR SIZE="6">
     220<A NAME="SEC4"></A>
     221<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     222<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC3"> &lt; </A>]</TD>
     223<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> &gt; </A>]</TD>
     224<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC2"> &lt;&lt; </A>]</TD>
     225<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC2"> Up </A>]</TD>
     226<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> &gt;&gt; </A>]</TD>
     227<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     228<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     229<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     230<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     231</TR></TABLE>
     232<H2> 2.2 Option summary </H2>
     233<!--docid::SEC4::-->
     234<P>
     235
     236General Options:
     237</P><P>
     238
     239<DL COMPACT>
     240<DT><SAMP>`-c'</SAMP>
     241<DD>Generate an object file.
     242<P>
     243
     244<DT><SAMP>`-o outfile'</SAMP>
     245<DD>Put object file, executable, or dll into output file <TT>`outfile'</TT>.
     246<P>
     247
     248<DT><SAMP>`-run source [args...]'</SAMP>
     249<DD>Compile file <VAR>source</VAR> and run it with the command line arguments
     250<VAR>args</VAR>. In order to be able to give more than one argument to a
     251script, several TCC options can be given <EM>after</EM> the
     252<SAMP>`-run'</SAMP> option, separated by spaces:
     253<TABLE><tr><td>&nbsp;</td><td class=example><pre>tcc "-run -L/usr/X11R6/lib -lX11" ex4.c
     254</pre></td></tr></table>In a script, it gives the following header:
     255<TABLE><tr><td>&nbsp;</td><td class=example><pre>#!/usr/local/bin/tcc -run -L/usr/X11R6/lib -lX11
     256</pre></td></tr></table><P>
     257
     258<DT><SAMP>`-v'</SAMP>
     259<DD>Display TCC version.
     260<P>
     261
     262<DT><SAMP>`-vv'</SAMP>
     263<DD>Show included files.  As sole argument, print search dirs.  -vvv shows tries too.
     264<P>
     265
     266<DT><SAMP>`-bench'</SAMP>
     267<DD>Display compilation statistics.
     268<P>
     269
     270</DL>
     271<P>
     272
     273Preprocessor options:
     274</P><P>
     275
     276<DL COMPACT>
     277<DT><SAMP>`-Idir'</SAMP>
     278<DD>Specify an additional include path. Include paths are searched in the
     279order they are specified.
     280<P>
     281
     282System include paths are always searched after. The default system
     283include paths are: <TT>`/usr/local/include'</TT>, <TT>`/usr/include'</TT>
     284and <TT>`PREFIX/lib/tcc/include'</TT>. (<TT>`PREFIX'</TT> is usually
     285<TT>`/usr'</TT> or <TT>`/usr/local'</TT>).
     286</P><P>
     287
     288<DT><SAMP>`-Dsym[=val]'</SAMP>
     289<DD>Define preprocessor symbol <SAMP>`sym'</SAMP> to
     290val. If val is not present, its value is <SAMP>`1'</SAMP>. Function-like macros can
     291also be defined: <SAMP>`-DF(a)=a+1'</SAMP>
     292<P>
     293
     294<DT><SAMP>`-Usym'</SAMP>
     295<DD>Undefine preprocessor symbol <SAMP>`sym'</SAMP>.
     296<P>
     297
     298<DT><SAMP>`-E'</SAMP>
     299<DD>Preprocess only, to stdout or file (with -o).
     300<P>
     301
     302</DL>
     303<P>
     304
     305Compilation flags:
     306</P><P>
     307
     308Note: each of the following options has a negative form beginning with
     309<SAMP>`-fno-'</SAMP>.
     310</P><P>
     311
     312<DL COMPACT>
     313<DT><SAMP>`-funsigned-char'</SAMP>
     314<DD>Let the <CODE>char</CODE> type be unsigned.
     315<P>
     316
     317<DT><SAMP>`-fsigned-char'</SAMP>
     318<DD>Let the <CODE>char</CODE> type be signed.
     319<P>
     320
     321<DT><SAMP>`-fno-common'</SAMP>
     322<DD>Do not generate common symbols for uninitialized data.
     323<P>
     324
     325<DT><SAMP>`-fleading-underscore'</SAMP>
     326<DD>Add a leading underscore at the beginning of each C symbol.
     327<P>
     328
     329<DT><SAMP>`-fms-extensions'</SAMP>
     330<DD>Allow a MS C compiler extensions to the language. Currently this
     331assumes a nested named structure declaration without an identifier
     332behaves like an unnamed one.
     333<P>
     334
     335<DT><SAMP>`-fdollars-in-identifiers'</SAMP>
     336<DD>Allow dollar signs in identifiers
     337<P>
     338
     339</DL>
     340<P>
     341
     342Warning options:
     343</P><P>
     344
     345<DL COMPACT>
     346<DT><SAMP>`-w'</SAMP>
     347<DD>Disable all warnings.
     348<P>
     349
     350</DL>
     351<P>
     352
     353Note: each of the following warning options has a negative form beginning with
     354<SAMP>`-Wno-'</SAMP>.
     355</P><P>
     356
     357<DL COMPACT>
     358<DT><SAMP>`-Wimplicit-function-declaration'</SAMP>
     359<DD>Warn about implicit function declaration.
     360<P>
     361
     362<DT><SAMP>`-Wunsupported'</SAMP>
     363<DD>Warn about unsupported GCC features that are ignored by TCC.
     364<P>
     365
     366<DT><SAMP>`-Wwrite-strings'</SAMP>
     367<DD>Make string constants be of type <CODE>const char *</CODE> instead of <CODE>char
     368*</CODE>.
     369<P>
     370
     371<DT><SAMP>`-Werror'</SAMP>
     372<DD>Abort compilation if warnings are issued.
     373<P>
     374
     375<DT><SAMP>`-Wall'</SAMP>
     376<DD>Activate all warnings, except <SAMP>`-Werror'</SAMP>, <SAMP>`-Wunusupported'</SAMP> and
     377<SAMP>`-Wwrite-strings'</SAMP>.
     378<P>
     379
     380</DL>
     381<P>
     382
     383Linker options:
     384</P><P>
     385
     386<DL COMPACT>
     387<DT><SAMP>`-Ldir'</SAMP>
     388<DD>Specify an additional static library path for the <SAMP>`-l'</SAMP> option. The
     389default library paths are <TT>`/usr/local/lib'</TT>, <TT>`/usr/lib'</TT> and <TT>`/lib'</TT>.
     390<P>
     391
     392<DT><SAMP>`-lxxx'</SAMP>
     393<DD>Link your program with dynamic library libxxx.so or static library
     394libxxx.a. The library is searched in the paths specified by the
     395<SAMP>`-L'</SAMP> option and <CODE>LIBRARY_PATH</CODE> variable.
     396<P>
     397
     398<DT><SAMP>`-Bdir'</SAMP>
     399<DD>Set the path where the tcc internal libraries (and include files) can be
     400found (default is <TT>`PREFIX/lib/tcc'</TT>).
     401<P>
     402
     403<DT><SAMP>`-shared'</SAMP>
     404<DD>Generate a shared library instead of an executable.
     405<P>
     406
     407<DT><SAMP>`-soname name'</SAMP>
     408<DD>set name for shared library to be used at runtime
     409<P>
     410
     411<DT><SAMP>`-static'</SAMP>
     412<DD>Generate a statically linked executable (default is a shared linked
     413executable).
     414<P>
     415
     416<DT><SAMP>`-rdynamic'</SAMP>
     417<DD>Export global symbols to the dynamic linker. It is useful when a library
     418opened with <CODE>dlopen()</CODE> needs to access executable symbols.
     419<P>
     420
     421<DT><SAMP>`-r'</SAMP>
     422<DD>Generate an object file combining all input files.
     423<P>
     424
     425<DT><SAMP>`-Wl,-rpath=path'</SAMP>
     426<DD>Put custom search path for dynamic libraries into executable.
     427<P>
     428
     429<DT><SAMP>`-Wl,--enable-new-dtags'</SAMP>
     430<DD>When putting a custom search path for dynamic libraries into the executable,
     431create the new ELF dynamic tag DT_RUNPATH instead of the old legacy DT_RPATH.
     432<P>
     433
     434<DT><SAMP>`-Wl,--oformat=fmt'</SAMP>
     435<DD>Use <VAR>fmt</VAR> as output format. The supported output formats are:
     436<DL COMPACT>
     437<DT><CODE>elf32-i386</CODE>
     438<DD>ELF output format (default)
     439<DT><CODE>binary</CODE>
     440<DD>Binary image (only for executable output)
     441<DT><CODE>coff</CODE>
     442<DD>COFF output format (only for executable output for TMS320C67xx target)
     443</DL>
     444<P>
     445
     446<DT><SAMP>`-Wl,-subsystem=console/gui/wince/...'</SAMP>
     447<DD>Set type for PE (Windows) executables.
     448<P>
     449
     450<DT><SAMP>`-Wl,-[Ttext=# | section-alignment=# | file-alignment=# | image-base=# | stack=#]'</SAMP>
     451<DD>Modify executable layout.
     452<P>
     453
     454<DT><SAMP>`-Wl,-Bsymbolic'</SAMP>
     455<DD>Set DT_SYMBOLIC tag.
     456<P>
     457
     458<DT><SAMP>`-Wl,-(no-)whole-archive'</SAMP>
     459<DD>Turn on/off linking of all objects in archives.
     460<P>
     461
     462</DL>
     463<P>
     464
     465Debugger options:
     466</P><P>
     467
     468<DL COMPACT>
     469<DT><SAMP>`-g'</SAMP>
     470<DD>Generate run time debug information so that you get clear run time
     471error messages: <CODE> test.c:68: in function 'test5()': dereferencing
     472invalid pointer</CODE> instead of the laconic <CODE>Segmentation
     473fault</CODE>.
     474<P>
     475
     476<DT><SAMP>`-b'</SAMP>
     477<DD>Generate additional support code to check
     478memory allocations and array/pointer bounds. <SAMP>`-g'</SAMP> is implied. Note
     479that the generated code is slower and bigger in this case.
     480<P>
     481
     482Note: <SAMP>`-b'</SAMP> is only available on i386 when using libtcc for the moment.
     483</P><P>
     484
     485<DT><SAMP>`-bt N'</SAMP>
     486<DD>Display N callers in stack traces. This is useful with <SAMP>`-g'</SAMP> or
     487<SAMP>`-b'</SAMP>.
     488<P>
     489
     490</DL>
     491<P>
     492
     493Misc options:
     494</P><P>
     495
     496<DL COMPACT>
     497<DT><SAMP>`-MD'</SAMP>
     498<DD>Generate makefile fragment with dependencies.
     499<P>
     500
     501<DT><SAMP>`-MF depfile'</SAMP>
     502<DD>Use <TT>`depfile'</TT> as output for -MD.
     503<P>
     504
     505<DT><SAMP>`-print-search-dirs'</SAMP>
     506<DD>Print the configured installation directory and a list of library
    300507and include directories tcc will search.
    301 </p>
    302 </dd>
    303 </dl>
    304 
    305 <p>Preprocessor options:
    306 </p>
    307 <dl compact="compact">
    308 <dt> &lsquo;<samp>-Idir</samp>&rsquo;</dt>
    309 <dd><p>Specify an additional include path. Include paths are searched in the
    310 order they are specified.
    311 </p>
    312 <p>System include paths are always searched after. The default system
    313 include paths are: &lsquo;<tt>/usr/local/include</tt>&rsquo;, &lsquo;<tt>/usr/include</tt>&rsquo;
    314 and &lsquo;<tt>PREFIX/lib/tcc/include</tt>&rsquo;. (&lsquo;<tt>PREFIX</tt>&rsquo; is usually
    315 &lsquo;<tt>/usr</tt>&rsquo; or &lsquo;<tt>/usr/local</tt>&rsquo;).
    316 </p>
    317 </dd>
    318 <dt> &lsquo;<samp>-Dsym[=val]</samp>&rsquo;</dt>
    319 <dd><p>Define preprocessor symbol &lsquo;<samp>sym</samp>&rsquo; to
    320 val. If val is not present, its value is &lsquo;<samp>1</samp>&rsquo;. Function-like macros can
    321 also be defined: &lsquo;<samp>-DF(a)=a+1</samp>&rsquo;
    322 </p>
    323 </dd>
    324 <dt> &lsquo;<samp>-Usym</samp>&rsquo;</dt>
    325 <dd><p>Undefine preprocessor symbol &lsquo;<samp>sym</samp>&rsquo;.
    326 </p></dd>
    327 </dl>
    328 
    329 <p>Compilation flags:
    330 </p>
    331 <p>Note: each of the following warning options has a negative form beginning with
    332 &lsquo;<samp>-fno-</samp>&rsquo;.
    333 </p>
    334 <dl compact="compact">
    335 <dt> &lsquo;<samp>-funsigned-char</samp>&rsquo;</dt>
    336 <dd><p>Let the <code>char</code> type be unsigned.
    337 </p>
    338 </dd>
    339 <dt> &lsquo;<samp>-fsigned-char</samp>&rsquo;</dt>
    340 <dd><p>Let the <code>char</code> type be signed.
    341 </p>
    342 </dd>
    343 <dt> &lsquo;<samp>-fno-common</samp>&rsquo;</dt>
    344 <dd><p>Do not generate common symbols for uninitialized data.
    345 </p>
    346 </dd>
    347 <dt> &lsquo;<samp>-fleading-underscore</samp>&rsquo;</dt>
    348 <dd><p>Add a leading underscore at the beginning of each C symbol.
    349 </p>
    350 </dd>
    351 </dl>
    352 
    353 <p>Warning options:
    354 </p>
    355 <dl compact="compact">
    356 <dt> &lsquo;<samp>-w</samp>&rsquo;</dt>
    357 <dd><p>Disable all warnings.
    358 </p>
    359 </dd>
    360 </dl>
    361 
    362 <p>Note: each of the following warning options has a negative form beginning with
    363 &lsquo;<samp>-Wno-</samp>&rsquo;.
    364 </p>
    365 <dl compact="compact">
    366 <dt> &lsquo;<samp>-Wimplicit-function-declaration</samp>&rsquo;</dt>
    367 <dd><p>Warn about implicit function declaration.
    368 </p>
    369 </dd>
    370 <dt> &lsquo;<samp>-Wunsupported</samp>&rsquo;</dt>
    371 <dd><p>Warn about unsupported GCC features that are ignored by TCC.
    372 </p>
    373 </dd>
    374 <dt> &lsquo;<samp>-Wwrite-strings</samp>&rsquo;</dt>
    375 <dd><p>Make string constants be of type <code>const char *</code> instead of <code>char
    376 *</code>.
    377 </p>
    378 </dd>
    379 <dt> &lsquo;<samp>-Werror</samp>&rsquo;</dt>
    380 <dd><p>Abort compilation if warnings are issued.
    381 </p>
    382 </dd>
    383 <dt> &lsquo;<samp>-Wall</samp>&rsquo; </dt>
    384 <dd><p>Activate all warnings, except &lsquo;<samp>-Werror</samp>&rsquo;, &lsquo;<samp>-Wunusupported</samp>&rsquo; and
    385 &lsquo;<samp>-Wwrite-strings</samp>&rsquo;.
    386 </p>
    387 </dd>
    388 </dl>
    389 
    390 <p>Linker options:
    391 </p>
    392 <dl compact="compact">
    393 <dt> &lsquo;<samp>-Ldir</samp>&rsquo;</dt>
    394 <dd><p>Specify an additional static library path for the &lsquo;<samp>-l</samp>&rsquo; option. The
    395 default library paths are &lsquo;<tt>/usr/local/lib</tt>&rsquo;, &lsquo;<tt>/usr/lib</tt>&rsquo; and &lsquo;<tt>/lib</tt>&rsquo;.
    396 </p>
    397 </dd>
    398 <dt> &lsquo;<samp>-lxxx</samp>&rsquo;</dt>
    399 <dd><p>Link your program with dynamic library libxxx.so or static library
    400 libxxx.a. The library is searched in the paths specified by the
    401 &lsquo;<samp>-L</samp>&rsquo; option.
    402 </p>
    403 </dd>
    404 <dt> &lsquo;<samp>-Bdir</samp>&rsquo;</dt>
    405 <dd><p>Set the path where the tcc internal libraries (and include files) can be
    406 found (default is &lsquo;<tt>PREFIX/lib/tcc</tt>&rsquo;).
    407 </p>
    408 </dd>
    409 <dt> &lsquo;<samp>-shared</samp>&rsquo;</dt>
    410 <dd><p>Generate a shared library instead of an executable.
    411 </p>
    412 </dd>
    413 <dt> &lsquo;<samp>-soname name</samp>&rsquo;</dt>
    414 <dd><p>set name for shared library to be used at runtime
    415 </p>
    416 </dd>
    417 <dt> &lsquo;<samp>-static</samp>&rsquo;</dt>
    418 <dd><p>Generate a statically linked executable (default is a shared linked
    419 executable).
    420 </p>
    421 </dd>
    422 <dt> &lsquo;<samp>-rdynamic</samp>&rsquo;</dt>
    423 <dd><p>Export global symbols to the dynamic linker. It is useful when a library
    424 opened with <code>dlopen()</code> needs to access executable symbols.
    425 </p>
    426 </dd>
    427 <dt> &lsquo;<samp>-r</samp>&rsquo;</dt>
    428 <dd><p>Generate an object file combining all input files.
    429 </p>
    430 </dd>
    431 <dt> &lsquo;<samp>-Wl,-rpath=path</samp>&rsquo;</dt>
    432 <dd><p>Put custom seatch path for dynamic libraries into executable.
    433 </p>
    434 </dd>
    435 <dt> &lsquo;<samp>-Wl,--oformat=fmt</samp>&rsquo;</dt>
    436 <dd><p>Use <var>fmt</var> as output format. The supported output formats are:
    437 </p><dl compact="compact">
    438 <dt> <code>elf32-i386</code></dt>
    439 <dd><p>ELF output format (default)
    440 </p></dd>
    441 <dt> <code>binary</code></dt>
    442 <dd><p>Binary image (only for executable output)
    443 </p></dd>
    444 <dt> <code>coff</code></dt>
    445 <dd><p>COFF output format (only for executable output for TMS320C67xx target)
    446 </p></dd>
    447 </dl>
    448 
    449 </dd>
    450 <dt> &lsquo;<samp>-Wl,-subsystem=console/gui/wince/...</samp>&rsquo;</dt>
    451 <dd><p>Set type for PE (Windows) executables.
    452 </p>
    453 </dd>
    454 <dt> &lsquo;<samp>-Wl,-[Ttext=# | section-alignment=# | file-alignment=# | image-base=# | stack=#]</samp>&rsquo;</dt>
    455 <dd><p>Modify executable layout.
    456 </p>
    457 </dd>
    458 <dt> &lsquo;<samp>-Wl,-Bsymbolic</samp>&rsquo;</dt>
    459 <dd><p>Set DT_SYMBOLIC tag.
    460 </p>
    461 </dd>
    462 </dl>
    463 
    464 <p>Debugger options:
    465 </p>
    466 <dl compact="compact">
    467 <dt> &lsquo;<samp>-g</samp>&rsquo;</dt>
    468 <dd><p>Generate run time debug information so that you get clear run time
    469 error messages: <code> test.c:68: in function 'test5()': dereferencing
    470 invalid pointer</code> instead of the laconic <code>Segmentation
    471 fault</code>.
    472 </p>
    473 </dd>
    474 <dt> &lsquo;<samp>-b</samp>&rsquo;</dt>
    475 <dd><p>Generate additional support code to check
    476 memory allocations and array/pointer bounds. &lsquo;<samp>-g</samp>&rsquo; is implied. Note
    477 that the generated code is slower and bigger in this case.
    478 </p>
    479 <p>Note: &lsquo;<samp>-b</samp>&rsquo; is only available on i386 for the moment.
    480 </p>
    481 </dd>
    482 <dt> &lsquo;<samp>-bt N</samp>&rsquo;</dt>
    483 <dd><p>Display N callers in stack traces. This is useful with &lsquo;<samp>-g</samp>&rsquo; or
    484 &lsquo;<samp>-b</samp>&rsquo;.
    485 </p>
    486 </dd>
    487 </dl>
    488 
    489 <p>Misc options:
    490 </p>
    491 <dl compact="compact">
    492 <dt> &lsquo;<samp>-MD</samp>&rsquo;</dt>
    493 <dd><p>Generate makefile fragment with dependencies.
    494 </p>
    495 </dd>
    496 <dt> &lsquo;<samp>-MF depfile</samp>&rsquo;</dt>
    497 <dd><p>Use &lsquo;<tt>depfile</tt>&rsquo; as output for -MD.
    498 </p>
    499 </dd>
    500 </dl>
    501 
    502 <p>Note: GCC options &lsquo;<samp>-Ox</samp>&rsquo;, &lsquo;<samp>-fx</samp>&rsquo; and &lsquo;<samp>-mx</samp>&rsquo; are
     508<P>
     509
     510<DT><SAMP>`-dumpversion'</SAMP>
     511<DD>Print version.
     512<P>
     513
     514</DL>
     515<P>
     516
     517Target specific options:
     518</P><P>
     519
     520<DL COMPACT>
     521<DT><SAMP>`-mms-bitfields'</SAMP>
     522<DD>Use an algorithm for bitfield alignment consistent with MSVC. Default is
     523gcc's algorithm.
     524<P>
     525
     526<DT><SAMP>`-mfloat-abi (ARM only)'</SAMP>
     527<DD>Select the float ABI. Possible values: <CODE>softfp</CODE> and <CODE>hard</CODE>
     528<P>
     529
     530<DT><SAMP>`-mno-sse'</SAMP>
     531<DD>Do not use sse registers on x86_64
     532<P>
     533
     534<DT><SAMP>`-m32, -m64'</SAMP>
     535<DD>Pass command line to the i386/x86_64 cross compiler.
     536<P>
     537
     538</DL>
     539<P>
     540
     541Note: GCC options <SAMP>`-Ox'</SAMP>, <SAMP>`-fx'</SAMP> and <SAMP>`-mx'</SAMP> are
    503542ignored.
    504 </p>
    505 
    506 <hr size="6">
    507 <a name="Clang"></a>
    508 <table cellpadding="1" cellspacing="1" border="0">
    509 <tr><td valign="middle" align="left">[<a href="#Option-summary" title="Previous section in reading order"> &lt; </a>]</td>
    510 <td valign="middle" align="left">[<a href="#ANSI-C" title="Next section in reading order"> &gt; </a>]</td>
    511 <td valign="middle" align="left"> &nbsp; </td>
    512 <td valign="middle" align="left">[<a href="#Invoke" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    513 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    514 <td valign="middle" align="left">[<a href="#asm" title="Next chapter"> &gt;&gt; </a>]</td>
    515 <td valign="middle" align="left"> &nbsp; </td>
    516 <td valign="middle" align="left"> &nbsp; </td>
    517 <td valign="middle" align="left"> &nbsp; </td>
    518 <td valign="middle" align="left"> &nbsp; </td>
    519 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    520 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    521 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    522 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    523 </tr></table>
    524 <a name="C-language-support"></a>
    525 <h1 class="chapter">3. C language support</h1>
    526 
    527 <hr size="6">
    528 <a name="ANSI-C"></a>
    529 <table cellpadding="1" cellspacing="1" border="0">
    530 <tr><td valign="middle" align="left">[<a href="#Clang" title="Previous section in reading order"> &lt; </a>]</td>
    531 <td valign="middle" align="left">[<a href="#ISOC99-extensions" title="Next section in reading order"> &gt; </a>]</td>
    532 <td valign="middle" align="left"> &nbsp; </td>
    533 <td valign="middle" align="left">[<a href="#Clang" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    534 <td valign="middle" align="left">[<a href="#Clang" title="Up section"> Up </a>]</td>
    535 <td valign="middle" align="left">[<a href="#asm" title="Next chapter"> &gt;&gt; </a>]</td>
    536 <td valign="middle" align="left"> &nbsp; </td>
    537 <td valign="middle" align="left"> &nbsp; </td>
    538 <td valign="middle" align="left"> &nbsp; </td>
    539 <td valign="middle" align="left"> &nbsp; </td>
    540 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    541 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    542 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    543 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    544 </tr></table>
    545 <h2 class="section">3.1 ANSI C</h2>
    546 
    547 <p>TCC implements all the ANSI C standard, including structure bit fields
    548 and floating point numbers (<code>long double</code>, <code>double</code>, and
    549 <code>float</code> fully supported).
    550 </p>
    551 <hr size="6">
    552 <a name="ISOC99-extensions"></a>
    553 <table cellpadding="1" cellspacing="1" border="0">
    554 <tr><td valign="middle" align="left">[<a href="#ANSI-C" title="Previous section in reading order"> &lt; </a>]</td>
    555 <td valign="middle" align="left">[<a href="#GNU-C-extensions" title="Next section in reading order"> &gt; </a>]</td>
    556 <td valign="middle" align="left"> &nbsp; </td>
    557 <td valign="middle" align="left">[<a href="#Clang" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    558 <td valign="middle" align="left">[<a href="#Clang" title="Up section"> Up </a>]</td>
    559 <td valign="middle" align="left">[<a href="#asm" title="Next chapter"> &gt;&gt; </a>]</td>
    560 <td valign="middle" align="left"> &nbsp; </td>
    561 <td valign="middle" align="left"> &nbsp; </td>
    562 <td valign="middle" align="left"> &nbsp; </td>
    563 <td valign="middle" align="left"> &nbsp; </td>
    564 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    565 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    566 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    567 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    568 </tr></table>
    569 <h2 class="section">3.2 ISOC99 extensions</h2>
    570 
    571 <p>TCC implements many features of the new C standard: ISO C99. Currently
    572 missing items are: complex and imaginary numbers and variable length
    573 arrays.
    574 </p>
    575 <p>Currently implemented ISOC99 features:
    576 </p>
    577 <ul>
    578 <li> 64 bit <code>long long</code> types are fully supported.
    579 
    580 </li><li> The boolean type <code>_Bool</code> is supported.
    581 
    582 </li><li> <code>__func__</code> is a string variable containing the current
     543</P><P>
     544
     545Environment variables that affect how tcc operates.
     546</P><P>
     547
     548<DL COMPACT>
     549
     550<DT><SAMP>`CPATH'</SAMP>
     551<DD><DT><SAMP>`C_INCLUDE_PATH'</SAMP>
     552<DD>A colon-separated list of directories searched for include files,
     553directories given with <SAMP>`-I'</SAMP> are searched first.
     554<P>
     555
     556<DT><SAMP>`LIBRARY_PATH'</SAMP>
     557<DD>A colon-separated list of directories searched for libraries for the
     558<SAMP>`-l'</SAMP> option, directories given with <SAMP>`-L'</SAMP> are searched first.
     559<P>
     560
     561</DL>
     562<P>
     563
     564<A NAME="Clang"></A>
     565<HR SIZE="6">
     566<A NAME="SEC5"></A>
     567<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     568<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC4"> &lt; </A>]</TD>
     569<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC6"> &gt; </A>]</TD>
     570<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &lt;&lt; </A>]</TD>
     571<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     572<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &gt;&gt; </A>]</TD>
     573<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     574<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     575<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     576<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     577</TR></TABLE>
     578<H1> 3. C language support </H1>
     579<!--docid::SEC5::-->
     580<P>
     581
     582<HR SIZE="6">
     583<A NAME="SEC6"></A>
     584<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     585<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> &lt; </A>]</TD>
     586<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC7"> &gt; </A>]</TD>
     587<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> &lt;&lt; </A>]</TD>
     588<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> Up </A>]</TD>
     589<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &gt;&gt; </A>]</TD>
     590<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     591<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     592<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     593<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     594</TR></TABLE>
     595<H2> 3.1 ANSI C </H2>
     596<!--docid::SEC6::-->
     597<P>
     598
     599TCC implements all the ANSI C standard, including structure bit fields
     600and floating point numbers (<CODE>long double</CODE>, <CODE>double</CODE>, and
     601<CODE>float</CODE> fully supported).
     602</P><P>
     603
     604<HR SIZE="6">
     605<A NAME="SEC7"></A>
     606<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     607<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC6"> &lt; </A>]</TD>
     608<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC8"> &gt; </A>]</TD>
     609<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC8"> &lt;&lt; </A>]</TD>
     610<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> Up </A>]</TD>
     611<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &gt;&gt; </A>]</TD>
     612<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     613<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     614<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     615<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     616</TR></TABLE>
     617<H2> 3.2 ISOC99 extensions </H2>
     618<!--docid::SEC7::-->
     619<P>
     620
     621TCC implements many features of the new C standard: ISO C99. Currently
     622missing items are: complex and imaginary numbers.
     623</P><P>
     624
     625Currently implemented ISOC99 features:
     626</P><P>
     627
     628<UL>
     629
     630<LI>variable length arrays.
     631<P>
     632
     633<LI>64 bit <CODE>long long</CODE> types are fully supported.
     634<P>
     635
     636<LI>The boolean type <CODE>_Bool</CODE> is supported.
     637<P>
     638
     639<LI><CODE>__func__</CODE> is a string variable containing the current
    583640function name.
    584 
    585 </li><li> Variadic macros: <code>__VA_ARGS__</code> can be used for
     641<P>
     642
     643<LI>Variadic macros: <CODE>__VA_ARGS__</CODE> can be used for
    586644   function-like macros:
    587 <table><tr><td>&nbsp;</td><td><pre class="example">    #define dprintf(level, __VA_ARGS__) printf(__VA_ARGS__)
    588 </pre></td></tr></table>
    589 
    590 <p><code>dprintf</code> can then be used with a variable number of parameters.
    591 </p>
    592 </li><li> Declarations can appear anywhere in a block (as in C++).
    593 
    594 </li><li> Array and struct/union elements can be initialized in any order by
     645<TABLE><tr><td>&nbsp;</td><td class=example><pre>    #define dprintf(level, __VA_ARGS__) printf(__VA_ARGS__)
     646</pre></td></tr></table><P>
     647
     648<CODE>dprintf</CODE> can then be used with a variable number of parameters.
     649</P><P>
     650
     651<LI>Declarations can appear anywhere in a block (as in C++).
     652<P>
     653
     654<LI>Array and struct/union elements can be initialized in any order by
    595655  using designators:
    596 <table><tr><td>&nbsp;</td><td><pre class="example">    struct { int x, y; } st[10] = { [0].x = 1, [0].y = 2 };
     656<TABLE><tr><td>&nbsp;</td><td class=example><pre>    struct { int x, y; } st[10] = { [0].x = 1, [0].y = 2 };
    597657
    598658    int tab[10] = { 1, 2, [5] = 5, [9] = 9};
    599 </pre></td></tr></table>
    600    
    601 </li><li> Compound initializers are supported:
    602 <table><tr><td>&nbsp;</td><td><pre class="example">    int *p = (int []){ 1, 2, 3 };
    603 </pre></td></tr></table>
    604 <p>to initialize a pointer pointing to an initialized array. The same
     659</pre></td></tr></table>   
     660<LI>Compound initializers are supported:
     661<TABLE><tr><td>&nbsp;</td><td class=example><pre>    int *p = (int []){ 1, 2, 3 };
     662</pre></td></tr></table>to initialize a pointer pointing to an initialized array. The same
    605663works for structures and strings.
    606 </p>
    607 </li><li> Hexadecimal floating point constants are supported:
    608 <table><tr><td>&nbsp;</td><td><pre class="example">          double d = 0x1234p10;
    609 </pre></td></tr></table>
    610 
    611 <p>is the same as writing
    612 </p><table><tr><td>&nbsp;</td><td><pre class="example">          double d = 4771840.0;
    613 </pre></td></tr></table>
    614 
    615 </li><li> <code>inline</code> keyword is ignored.
    616 
    617 </li><li> <code>restrict</code> keyword is ignored.
    618 </li></ul>
    619 
    620 <hr size="6">
    621 <a name="GNU-C-extensions"></a>
    622 <table cellpadding="1" cellspacing="1" border="0">
    623 <tr><td valign="middle" align="left">[<a href="#ISOC99-extensions" title="Previous section in reading order"> &lt; </a>]</td>
    624 <td valign="middle" align="left">[<a href="#TinyCC-extensions" title="Next section in reading order"> &gt; </a>]</td>
    625 <td valign="middle" align="left"> &nbsp; </td>
    626 <td valign="middle" align="left">[<a href="#Clang" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    627 <td valign="middle" align="left">[<a href="#Clang" title="Up section"> Up </a>]</td>
    628 <td valign="middle" align="left">[<a href="#asm" title="Next chapter"> &gt;&gt; </a>]</td>
    629 <td valign="middle" align="left"> &nbsp; </td>
    630 <td valign="middle" align="left"> &nbsp; </td>
    631 <td valign="middle" align="left"> &nbsp; </td>
    632 <td valign="middle" align="left"> &nbsp; </td>
    633 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    634 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    635 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    636 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    637 </tr></table>
    638 <h2 class="section">3.3 GNU C extensions</h2>
    639 
    640 <p>TCC implements some GNU C extensions:
    641 </p>
    642 <ul>
    643 <li> array designators can be used without &rsquo;=&rsquo;:
    644 <table><tr><td>&nbsp;</td><td><pre class="example">    int a[10] = { [0] 1, [5] 2, 3, 4 };
    645 </pre></td></tr></table>
    646 
    647 </li><li> Structure field designators can be a label:
    648 <table><tr><td>&nbsp;</td><td><pre class="example">    struct { int x, y; } st = { x: 1, y: 1};
    649 </pre></td></tr></table>
    650 <p>instead of
    651 </p><table><tr><td>&nbsp;</td><td><pre class="example">    struct { int x, y; } st = { .x = 1, .y = 1};
    652 </pre></td></tr></table>
    653 
    654 </li><li> <code>\e</code> is ASCII character 27.
    655 
    656 </li><li> case ranges : ranges can be used in <code>case</code>s:
    657 <table><tr><td>&nbsp;</td><td><pre class="example">    switch(a) {
    658     case 1 &hellip; 9:
    659           printf(&quot;range 1 to 9\n&quot;);
     664<P>
     665
     666<LI>Hexadecimal floating point constants are supported:
     667<TABLE><tr><td>&nbsp;</td><td class=example><pre>          double d = 0x1234p10;
     668</pre></td></tr></table><P>
     669
     670is the same as writing
     671<TABLE><tr><td>&nbsp;</td><td class=example><pre>          double d = 4771840.0;
     672</pre></td></tr></table></P><P>
     673
     674<LI><CODE>inline</CODE> keyword is ignored.
     675<P>
     676
     677<LI><CODE>restrict</CODE> keyword is ignored.
     678</UL>
     679<P>
     680
     681<HR SIZE="6">
     682<A NAME="SEC8"></A>
     683<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     684<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC7"> &lt; </A>]</TD>
     685<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC9"> &gt; </A>]</TD>
     686<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC9"> &lt;&lt; </A>]</TD>
     687<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> Up </A>]</TD>
     688<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &gt;&gt; </A>]</TD>
     689<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     690<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     691<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     692<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     693</TR></TABLE>
     694<H2> 3.3 GNU C extensions </H2>
     695<!--docid::SEC8::-->
     696<P>
     697
     698TCC implements some GNU C extensions:
     699</P><P>
     700
     701<UL>
     702
     703<LI>array designators can be used without '=':
     704<TABLE><tr><td>&nbsp;</td><td class=example><pre>    int a[10] = { [0] 1, [5] 2, 3, 4 };
     705</pre></td></tr></table><P>
     706
     707<LI>Structure field designators can be a label:
     708<TABLE><tr><td>&nbsp;</td><td class=example><pre>    struct { int x, y; } st = { x: 1, y: 1};
     709</pre></td></tr></table>instead of
     710<TABLE><tr><td>&nbsp;</td><td class=example><pre>    struct { int x, y; } st = { .x = 1, .y = 1};
     711</pre></td></tr></table><P>
     712
     713<LI><CODE>\e</CODE> is ASCII character 27.
     714<P>
     715
     716<LI>case ranges : ranges can be used in <CODE>case</CODE>s:
     717<TABLE><tr><td>&nbsp;</td><td class=example><pre>    switch(a) {
     718    case 1 <small>...</small> 9:
     719          printf("range 1 to 9\n");
    660720          break;
    661721    default:
    662           printf(&quot;unexpected\n&quot;);
     722          printf("unexpected\n");
    663723          break;
    664724    }
    665 </pre></td></tr></table>
    666 
    667 <a name="index-aligned-attribute"></a>
    668 <a name="index-packed-attribute"></a>
    669 <a name="index-section-attribute"></a>
    670 <a name="index-unused-attribute"></a>
    671 <a name="index-cdecl-attribute"></a>
    672 <a name="index-stdcall-attribute"></a>
    673 <a name="index-regparm-attribute"></a>
    674 <a name="index-dllexport-attribute"></a>
    675 
    676 </li><li> The keyword <code>__attribute__</code> is handled to specify variable or
     725</pre></td></tr></table><P>
     726
     727<A NAME="IDX1"></A>
     728<A NAME="IDX2"></A>
     729<A NAME="IDX3"></A>
     730<A NAME="IDX4"></A>
     731<A NAME="IDX5"></A>
     732<A NAME="IDX6"></A>
     733<A NAME="IDX7"></A>
     734<A NAME="IDX8"></A>
     735</P><P>
     736
     737<LI>The keyword <CODE>__attribute__</CODE> is handled to specify variable or
    677738function attributes. The following attributes are supported:
    678   <ul>
    679 <li> <code>aligned(n)</code>: align a variable or a structure field to n bytes
     739<UL>
     740
     741<LI><CODE>aligned(n)</CODE>: align a variable or a structure field to n bytes
    680742(must be a power of two).
    681 
    682   </li><li> <code>packed</code>: force alignment of a variable or a structure field to
     743<P>
     744
     745<LI><CODE>packed</CODE>: force alignment of a variable or a structure field to
    683746  1.
    684 
    685   </li><li> <code>section(name)</code>: generate function or data in assembly section
     747<P>
     748
     749<LI><CODE>section(name)</CODE>: generate function or data in assembly section
    686750name (name is a string containing the section name) instead of the default
    687751section.
    688 
    689   </li><li> <code>unused</code>: specify that the variable or the function is unused.
    690 
    691   </li><li> <code>cdecl</code>: use standard C calling convention (default).
    692 
    693   </li><li> <code>stdcall</code>: use Pascal-like calling convention.
    694 
    695   </li><li> <code>regparm(n)</code>: use fast i386 calling convention. <var>n</var> must be
    696 between 1 and 3. The first <var>n</var> function parameters are respectively put in
    697 registers <code>%eax</code>, <code>%edx</code> and <code>%ecx</code>.
    698 
    699   </li><li> <code>dllexport</code>: export function from dll/executable (win32 only)
    700 
    701 </li></ul>
    702 
    703 <p>Here are some examples:
    704 </p><table><tr><td>&nbsp;</td><td><pre class="example">    int a __attribute__ ((aligned(8), section(&quot;.mysection&quot;)));
    705 </pre></td></tr></table>
    706 
    707 <p>align variable <code>a</code> to 8 bytes and put it in section <code>.mysection</code>.
    708 </p>
    709 <table><tr><td>&nbsp;</td><td><pre class="example">    int my_add(int a, int b) __attribute__ ((section(&quot;.mycodesection&quot;)))
     752<P>
     753
     754<LI><CODE>unused</CODE>: specify that the variable or the function is unused.
     755<P>
     756
     757<LI><CODE>cdecl</CODE>: use standard C calling convention (default).
     758<P>
     759
     760<LI><CODE>stdcall</CODE>: use Pascal-like calling convention.
     761<P>
     762
     763<LI><CODE>regparm(n)</CODE>: use fast i386 calling convention. <VAR>n</VAR> must be
     764between 1 and 3. The first <VAR>n</VAR> function parameters are respectively put in
     765registers <CODE>%eax</CODE>, <CODE>%edx</CODE> and <CODE>%ecx</CODE>.
     766<P>
     767
     768<LI><CODE>dllexport</CODE>: export function from dll/executable (win32 only)
     769<P>
     770
     771</UL>
     772<P>
     773
     774Here are some examples:
     775<TABLE><tr><td>&nbsp;</td><td class=example><pre>    int a __attribute__ ((aligned(8), section(".mysection")));
     776</pre></td></tr></table></P><P>
     777
     778align variable <CODE>a</CODE> to 8 bytes and put it in section <CODE>.mysection</CODE>.
     779</P><P>
     780
     781<TABLE><tr><td>&nbsp;</td><td class=example><pre>    int my_add(int a, int b) __attribute__ ((section(".mycodesection")))
    710782    {
    711783        return a + b;
    712784    }
    713 </pre></td></tr></table>
    714 
    715 <p>generate function <code>my_add</code> in section <code>.mycodesection</code>.
    716 </p>
    717 </li><li> GNU style variadic macros:
    718 <table><tr><td>&nbsp;</td><td><pre class="example">    #define dprintf(fmt, args&hellip;) printf(fmt, ## args)
    719 
    720     dprintf(&quot;no arg\n&quot;);
    721     dprintf(&quot;one arg %d\n&quot;, 1);
    722 </pre></td></tr></table>
    723 
    724 </li><li> <code>__FUNCTION__</code> is interpreted as C99 <code>__func__</code>
     785</pre></td></tr></table></P><P>
     786
     787generate function <CODE>my_add</CODE> in section <CODE>.mycodesection</CODE>.
     788</P><P>
     789
     790<LI>GNU style variadic macros:
     791<TABLE><tr><td>&nbsp;</td><td class=example><pre>    #define dprintf(fmt, args<small>...</small>) printf(fmt, ## args)
     792
     793    dprintf("no arg\n");
     794    dprintf("one arg %d\n", 1);
     795</pre></td></tr></table><P>
     796
     797<LI><CODE>__FUNCTION__</CODE> is interpreted as C99 <CODE>__func__</CODE>
    725798(so it has not exactly the same semantics as string literal GNUC
    726799where it is a string literal).
    727 
    728 </li><li> The <code>__alignof__</code> keyword can be used as <code>sizeof</code>
     800<P>
     801
     802<LI>The <CODE>__alignof__</CODE> keyword can be used as <CODE>sizeof</CODE>
    729803to get the alignment of a type or an expression.
    730 
    731 </li><li> The <code>typeof(x)</code> returns the type of <code>x</code>.
    732 <code>x</code> is an expression or a type.
    733 
    734 </li><li> Computed gotos: <code>&amp;&amp;label</code> returns a pointer of type
    735 <code>void *</code> on the goto label <code>label</code>. <code>goto *expr</code> can be
    736 used to jump on the pointer resulting from <code>expr</code>.
    737 
    738 </li><li> Inline assembly with asm instruction:
    739 <a name="index-inline-assembly"></a>
    740 <a name="index-assembly_002c-inline"></a>
    741 <a name="index-_005f_005fasm_005f_005f"></a>
    742 <table><tr><td>&nbsp;</td><td><pre class="example">static inline void * my_memcpy(void * to, const void * from, size_t n)
     804<P>
     805
     806<LI>The <CODE>typeof(x)</CODE> returns the type of <CODE>x</CODE>.
     807<CODE>x</CODE> is an expression or a type.
     808<P>
     809
     810<LI>Computed gotos: <CODE>&#38;&#38;label</CODE> returns a pointer of type
     811<CODE>void *</CODE> on the goto label <CODE>label</CODE>. <CODE>goto *expr</CODE> can be
     812used to jump on the pointer resulting from <CODE>expr</CODE>.
     813<P>
     814
     815<LI>Inline assembly with asm instruction:
     816<A NAME="IDX9"></A>
     817<A NAME="IDX10"></A>
     818<A NAME="IDX11"></A>
     819<TABLE><tr><td>&nbsp;</td><td class=example><pre>static inline void * my_memcpy(void * to, const void * from, size_t n)
    743820{
    744821int d0, d1, d2;
    745822__asm__ __volatile__(
    746         &quot;rep ; movsl\n\t&quot;
    747         &quot;testb $2,%b4\n\t&quot;
    748         &quot;je 1f\n\t&quot;
    749         &quot;movsw\n&quot;
    750         &quot;1:\ttestb $1,%b4\n\t&quot;
    751         &quot;je 2f\n\t&quot;
    752         &quot;movsb\n&quot;
    753         &quot;2:&quot;
    754         : &quot;=&amp;c&quot; (d0), &quot;=&amp;D&quot; (d1), &quot;=&amp;S&quot; (d2)
    755         :&quot;0&quot; (n/4), &quot;q&quot; (n),&quot;1&quot; ((long) to),&quot;2&quot; ((long) from)
    756         : &quot;memory&quot;);
     823        "rep ; movsl\n\t"
     824        "testb $2,%b4\n\t"
     825        "je 1f\n\t"
     826        "movsw\n"
     827        "1:\ttestb $1,%b4\n\t"
     828        "je 2f\n\t"
     829        "movsb\n"
     830        "2:"
     831        : "=&c" (d0), "=&#38;D" (d1), "=&#38;S" (d2)
     832        :"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
     833        : "memory");
    757834return (to);
    758835}
    759 </pre></td></tr></table>
    760 
    761 <a name="index-gas"></a>
    762 <p>TCC includes its own x86 inline assembler with a <code>gas</code>-like (GNU
     836</pre></td></tr></table><P>
     837
     838<A NAME="IDX12"></A>
     839TCC includes its own x86 inline assembler with a <CODE>gas</CODE>-like (GNU
    763840assembler) syntax. No intermediate files are generated. GCC 3.x named
    764841operands are supported.
    765 </p>
    766 </li><li> <code>__builtin_types_compatible_p()</code> and <code>__builtin_constant_p()</code>
     842</P><P>
     843
     844<LI><CODE>__builtin_types_compatible_p()</CODE> and <CODE>__builtin_constant_p()</CODE>
    767845are supported.
    768 
    769 </li><li> <code>#pragma pack</code> is supported for win32 compatibility.
    770 
    771 </li></ul>
    772 
    773 <hr size="6">
    774 <a name="TinyCC-extensions"></a>
    775 <table cellpadding="1" cellspacing="1" border="0">
    776 <tr><td valign="middle" align="left">[<a href="#GNU-C-extensions" title="Previous section in reading order"> &lt; </a>]</td>
    777 <td valign="middle" align="left">[<a href="#asm" title="Next section in reading order"> &gt; </a>]</td>
    778 <td valign="middle" align="left"> &nbsp; </td>
    779 <td valign="middle" align="left">[<a href="#Clang" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    780 <td valign="middle" align="left">[<a href="#Clang" title="Up section"> Up </a>]</td>
    781 <td valign="middle" align="left">[<a href="#asm" title="Next chapter"> &gt;&gt; </a>]</td>
    782 <td valign="middle" align="left"> &nbsp; </td>
    783 <td valign="middle" align="left"> &nbsp; </td>
    784 <td valign="middle" align="left"> &nbsp; </td>
    785 <td valign="middle" align="left"> &nbsp; </td>
    786 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    787 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    788 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    789 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    790 </tr></table>
    791 <h2 class="section">3.4 TinyCC extensions</h2>
    792 
    793 <ul>
    794 <li> <code>__TINYC__</code> is a predefined macro to <code>1</code> to
    795 indicate that you use TCC.
    796 
    797 </li><li> <code>#!</code> at the start of a line is ignored to allow scripting.
    798 
    799 </li><li> Binary digits can be entered (<code>0b101</code> instead of
    800 <code>5</code>).
    801 
    802 </li><li> <code>__BOUNDS_CHECKING_ON</code> is defined if bound checking is activated.
    803 
    804 </li></ul>
    805 
    806 <hr size="6">
    807 <a name="asm"></a>
    808 <table cellpadding="1" cellspacing="1" border="0">
    809 <tr><td valign="middle" align="left">[<a href="#TinyCC-extensions" title="Previous section in reading order"> &lt; </a>]</td>
    810 <td valign="middle" align="left">[<a href="#Syntax" title="Next section in reading order"> &gt; </a>]</td>
    811 <td valign="middle" align="left"> &nbsp; </td>
    812 <td valign="middle" align="left">[<a href="#Clang" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    813 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    814 <td valign="middle" align="left">[<a href="#linker" title="Next chapter"> &gt;&gt; </a>]</td>
    815 <td valign="middle" align="left"> &nbsp; </td>
    816 <td valign="middle" align="left"> &nbsp; </td>
    817 <td valign="middle" align="left"> &nbsp; </td>
    818 <td valign="middle" align="left"> &nbsp; </td>
    819 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    820 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    821 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    822 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    823 </tr></table>
    824 <a name="TinyCC-Assembler"></a>
    825 <h1 class="chapter">4. TinyCC Assembler</h1>
    826 
    827 <p>Since version 0.9.16, TinyCC integrates its own assembler. TinyCC
     846<P>
     847
     848<LI><CODE>#pragma pack</CODE> is supported for win32 compatibility.
     849<P>
     850
     851</UL>
     852<P>
     853
     854<HR SIZE="6">
     855<A NAME="SEC9"></A>
     856<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     857<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC8"> &lt; </A>]</TD>
     858<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &gt; </A>]</TD>
     859<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> &lt;&lt; </A>]</TD>
     860<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC5"> Up </A>]</TD>
     861<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &gt;&gt; </A>]</TD>
     862<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     863<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     864<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     865<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     866</TR></TABLE>
     867<H2> 3.4 TinyCC extensions </H2>
     868<!--docid::SEC9::-->
     869<P>
     870
     871<UL>
     872
     873<LI><CODE>__TINYC__</CODE> is a predefined macro to indicate that you use TCC.
     874<P>
     875
     876<LI><CODE>#!</CODE> at the start of a line is ignored to allow scripting.
     877<P>
     878
     879<LI>Binary digits can be entered (<CODE>0b101</CODE> instead of
     880<CODE>5</CODE>).
     881<P>
     882
     883<LI><CODE>__BOUNDS_CHECKING_ON</CODE> is defined if bound checking is activated.
     884<P>
     885
     886</UL>
     887<P>
     888
     889<A NAME="asm"></A>
     890<HR SIZE="6">
     891<A NAME="SEC10"></A>
     892<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     893<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC9"> &lt; </A>]</TD>
     894<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC11"> &gt; </A>]</TD>
     895<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &lt;&lt; </A>]</TD>
     896<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     897<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &gt;&gt; </A>]</TD>
     898<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     899<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     900<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     901<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     902</TR></TABLE>
     903<H1> 4. TinyCC Assembler </H1>
     904<!--docid::SEC10::-->
     905<P>
     906
     907Since version 0.9.16, TinyCC integrates its own assembler. TinyCC
    828908assembler supports a gas-like syntax (GNU assembler). You can
    829 desactivate assembler support if you want a smaller TinyCC executable
     909deactivate assembler support if you want a smaller TinyCC executable
    830910(the C compiler does not rely on the assembler).
    831 </p>
    832 <p>TinyCC Assembler is used to handle files with &lsquo;<tt>.S</tt>&rsquo; (C
    833 preprocessed assembler) and &lsquo;<tt>.s</tt>&rsquo; extensions. It is also used to
    834 handle the GNU inline assembler with the <code>asm</code> keyword.
    835 </p>
    836 <hr size="6">
    837 <a name="Syntax"></a>
    838 <table cellpadding="1" cellspacing="1" border="0">
    839 <tr><td valign="middle" align="left">[<a href="#asm" title="Previous section in reading order"> &lt; </a>]</td>
    840 <td valign="middle" align="left">[<a href="#Expressions" title="Next section in reading order"> &gt; </a>]</td>
    841 <td valign="middle" align="left"> &nbsp; </td>
    842 <td valign="middle" align="left">[<a href="#asm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    843 <td valign="middle" align="left">[<a href="#asm" title="Up section"> Up </a>]</td>
    844 <td valign="middle" align="left">[<a href="#linker" title="Next chapter"> &gt;&gt; </a>]</td>
    845 <td valign="middle" align="left"> &nbsp; </td>
    846 <td valign="middle" align="left"> &nbsp; </td>
    847 <td valign="middle" align="left"> &nbsp; </td>
    848 <td valign="middle" align="left"> &nbsp; </td>
    849 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    850 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    851 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    852 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    853 </tr></table>
    854 <h2 class="section">4.1 Syntax</h2>
    855 
    856 <p>TinyCC Assembler supports most of the gas syntax. The tokens are the
     911</P><P>
     912
     913TinyCC Assembler is used to handle files with <TT>`.S'</TT> (C
     914preprocessed assembler) and <TT>`.s'</TT> extensions. It is also used to
     915handle the GNU inline assembler with the <CODE>asm</CODE> keyword.
     916</P><P>
     917
     918<HR SIZE="6">
     919<A NAME="SEC11"></A>
     920<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     921<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &lt; </A>]</TD>
     922<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC12"> &gt; </A>]</TD>
     923<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &lt;&lt; </A>]</TD>
     924<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> Up </A>]</TD>
     925<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &gt;&gt; </A>]</TD>
     926<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     927<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     928<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     929<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     930</TR></TABLE>
     931<H2> 4.1 Syntax </H2>
     932<!--docid::SEC11::-->
     933<P>
     934
     935TinyCC Assembler supports most of the gas syntax. The tokens are the
    857936same as C.
    858 </p>
    859 <ul>
    860 <li> C and C++ comments are supported.
    861 
    862 </li><li> Identifiers are the same as C, so you cannot use &rsquo;.&rsquo; or &rsquo;$&rsquo;.
    863 
    864 </li><li> Only 32 bit integer numbers are supported.
    865 
    866 </li></ul>
    867 
    868 <hr size="6">
    869 <a name="Expressions"></a>
    870 <table cellpadding="1" cellspacing="1" border="0">
    871 <tr><td valign="middle" align="left">[<a href="#Syntax" title="Previous section in reading order"> &lt; </a>]</td>
    872 <td valign="middle" align="left">[<a href="#Labels" title="Next section in reading order"> &gt; </a>]</td>
    873 <td valign="middle" align="left"> &nbsp; </td>
    874 <td valign="middle" align="left">[<a href="#asm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    875 <td valign="middle" align="left">[<a href="#asm" title="Up section"> Up </a>]</td>
    876 <td valign="middle" align="left">[<a href="#linker" title="Next chapter"> &gt;&gt; </a>]</td>
    877 <td valign="middle" align="left"> &nbsp; </td>
    878 <td valign="middle" align="left"> &nbsp; </td>
    879 <td valign="middle" align="left"> &nbsp; </td>
    880 <td valign="middle" align="left"> &nbsp; </td>
    881 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    882 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    883 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    884 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    885 </tr></table>
    886 <h2 class="section">4.2 Expressions</h2>
    887 
    888 <ul>
    889 <li> Integers in decimal, octal and hexa are supported.
    890 
    891 </li><li> Unary operators: +, -, ~.
    892 
    893 </li><li> Binary operators in decreasing priority order:
    894 
    895 <ol>
    896 <li> *, /, %
    897 </li><li> &amp;, |, ^
    898 </li><li> +, -
    899 </li></ol>
    900 
    901 </li><li> A value is either an absolute number or a label plus an offset.
    902 All operators accept absolute values except &rsquo;+&rsquo; and &rsquo;-&rsquo;. &rsquo;+&rsquo; or &rsquo;-&rsquo; can be
    903 used to add an offset to a label. &rsquo;-&rsquo; supports two labels only if they
     937</P><P>
     938
     939<UL>
     940
     941<LI>C and C++ comments are supported.
     942<P>
     943
     944<LI>Identifiers are the same as C, so you cannot use '.' or '$'.
     945<P>
     946
     947<LI>Only 32 bit integer numbers are supported.
     948<P>
     949
     950</UL>
     951<P>
     952
     953<HR SIZE="6">
     954<A NAME="SEC12"></A>
     955<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     956<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC11"> &lt; </A>]</TD>
     957<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC13"> &gt; </A>]</TD>
     958<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC13"> &lt;&lt; </A>]</TD>
     959<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> Up </A>]</TD>
     960<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &gt;&gt; </A>]</TD>
     961<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     962<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     963<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     964<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     965</TR></TABLE>
     966<H2> 4.2 Expressions </H2>
     967<!--docid::SEC12::-->
     968<P>
     969
     970<UL>
     971
     972<LI>Integers in decimal, octal and hexa are supported.
     973<P>
     974
     975<LI>Unary operators: +, -, ~.
     976<P>
     977
     978<LI>Binary operators in decreasing priority order:
     979<P>
     980
     981<OL>
     982<LI>*, /, %
     983<LI>&#38;, |, ^
     984<LI>+, -
     985</OL>
     986<P>
     987
     988<LI>A value is either an absolute number or a label plus an offset.
     989All operators accept absolute values except '+' and '-'. '+' or '-' can be
     990used to add an offset to a label. '-' supports two labels only if they
    904991are the same or if they are both defined and in the same section.
    905 
    906 </li></ul>
    907 
    908 <hr size="6">
    909 <a name="Labels"></a>
    910 <table cellpadding="1" cellspacing="1" border="0">
    911 <tr><td valign="middle" align="left">[<a href="#Expressions" title="Previous section in reading order"> &lt; </a>]</td>
    912 <td valign="middle" align="left">[<a href="#Directives" title="Next section in reading order"> &gt; </a>]</td>
    913 <td valign="middle" align="left"> &nbsp; </td>
    914 <td valign="middle" align="left">[<a href="#asm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    915 <td valign="middle" align="left">[<a href="#asm" title="Up section"> Up </a>]</td>
    916 <td valign="middle" align="left">[<a href="#linker" title="Next chapter"> &gt;&gt; </a>]</td>
    917 <td valign="middle" align="left"> &nbsp; </td>
    918 <td valign="middle" align="left"> &nbsp; </td>
    919 <td valign="middle" align="left"> &nbsp; </td>
    920 <td valign="middle" align="left"> &nbsp; </td>
    921 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    922 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    923 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    924 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    925 </tr></table>
    926 <h2 class="section">4.3 Labels</h2>
    927 
    928 <ul>
    929 <li> All labels are considered as local, except undefined ones.
    930 
    931 </li><li> Numeric labels can be used as local <code>gas</code>-like labels.
    932 They can be defined several times in the same source. Use &rsquo;b&rsquo;
    933 (backward) or &rsquo;f&rsquo; (forward) as suffix to reference them:
    934 
    935 <table><tr><td>&nbsp;</td><td><pre class="example"> 1:
     992<P>
     993
     994</UL>
     995<P>
     996
     997<HR SIZE="6">
     998<A NAME="SEC13"></A>
     999<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1000<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC12"> &lt; </A>]</TD>
     1001<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC14"> &gt; </A>]</TD>
     1002<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC14"> &lt;&lt; </A>]</TD>
     1003<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> Up </A>]</TD>
     1004<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &gt;&gt; </A>]</TD>
     1005<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1006<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1007<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1008<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1009</TR></TABLE>
     1010<H2> 4.3 Labels </H2>
     1011<!--docid::SEC13::-->
     1012<P>
     1013
     1014<UL>
     1015
     1016<LI>All labels are considered as local, except undefined ones.
     1017<P>
     1018
     1019<LI>Numeric labels can be used as local <CODE>gas</CODE>-like labels.
     1020They can be defined several times in the same source. Use 'b'
     1021(backward) or 'f' (forward) as suffix to reference them:
     1022<P>
     1023
     1024<TABLE><tr><td>&nbsp;</td><td class=example><pre> 1:
    9361025      jmp 1b /* jump to '1' label before */
    9371026      jmp 1f /* jump to '1' label after */
    9381027 1:
    939 </pre></td></tr></table>
    940 
    941 </li></ul>
    942 
    943 <hr size="6">
    944 <a name="Directives"></a>
    945 <table cellpadding="1" cellspacing="1" border="0">
    946 <tr><td valign="middle" align="left">[<a href="#Labels" title="Previous section in reading order"> &lt; </a>]</td>
    947 <td valign="middle" align="left">[<a href="#X86-Assembler" title="Next section in reading order"> &gt; </a>]</td>
    948 <td valign="middle" align="left"> &nbsp; </td>
    949 <td valign="middle" align="left">[<a href="#asm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    950 <td valign="middle" align="left">[<a href="#asm" title="Up section"> Up </a>]</td>
    951 <td valign="middle" align="left">[<a href="#linker" title="Next chapter"> &gt;&gt; </a>]</td>
    952 <td valign="middle" align="left"> &nbsp; </td>
    953 <td valign="middle" align="left"> &nbsp; </td>
    954 <td valign="middle" align="left"> &nbsp; </td>
    955 <td valign="middle" align="left"> &nbsp; </td>
    956 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    957 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    958 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    959 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    960 </tr></table>
    961 <h2 class="section">4.4 Directives</h2>
    962 <a name="index-assembler-directives"></a>
    963 <a name="index-directives_002c-assembler"></a>
    964 <a name="index-align-directive"></a>
    965 <a name="index-skip-directive"></a>
    966 <a name="index-space-directive"></a>
    967 <a name="index-byte-directive"></a>
    968 <a name="index-word-directive"></a>
    969 <a name="index-short-directive"></a>
    970 <a name="index-int-directive"></a>
    971 <a name="index-long-directive"></a>
    972 <a name="index-quad-directive"></a>
    973 <a name="index-globl-directive"></a>
    974 <a name="index-global-directive"></a>
    975 <a name="index-section-directive"></a>
    976 <a name="index-text-directive"></a>
    977 <a name="index-data-directive"></a>
    978 <a name="index-bss-directive"></a>
    979 <a name="index-fill-directive"></a>
    980 <a name="index-org-directive"></a>
    981 <a name="index-previous-directive"></a>
    982 <a name="index-string-directive"></a>
    983 <a name="index-asciz-directive"></a>
    984 <a name="index-ascii-directive"></a>
    985 
    986 <p>All directives are preceeded by a &rsquo;.&rsquo;. The following directives are
     1028</pre></td></tr></table></P><P>
     1029
     1030</UL>
     1031<P>
     1032
     1033<HR SIZE="6">
     1034<A NAME="SEC14"></A>
     1035<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1036<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC13"> &lt; </A>]</TD>
     1037<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC15"> &gt; </A>]</TD>
     1038<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC15"> &lt;&lt; </A>]</TD>
     1039<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> Up </A>]</TD>
     1040<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &gt;&gt; </A>]</TD>
     1041<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1042<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1043<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1044<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1045</TR></TABLE>
     1046<H2> 4.4 Directives </H2>
     1047<!--docid::SEC14::-->
     1048<P>
     1049
     1050All directives are preceded by a '.'. The following directives are
    9871051supported:
    988 </p>
    989 <ul>
    990 <li> .align n[,value]
    991 </li><li> .skip n[,value]
    992 </li><li> .space n[,value]
    993 </li><li> .byte value1[,...]
    994 </li><li> .word value1[,...]
    995 </li><li> .short value1[,...]
    996 </li><li> .int value1[,...]
    997 </li><li> .long value1[,...]
    998 </li><li> .quad immediate_value1[,...]
    999 </li><li> .globl symbol
    1000 </li><li> .global symbol
    1001 </li><li> .section section
    1002 </li><li> .text
    1003 </li><li> .data
    1004 </li><li> .bss
    1005 </li><li> .fill repeat[,size[,value]]
    1006 </li><li> .org n
    1007 </li><li> .previous
    1008 </li><li> .string string[,...]
    1009 </li><li> .asciz string[,...]
    1010 </li><li> .ascii string[,...]
    1011 </li></ul>
    1012 
    1013 <hr size="6">
    1014 <a name="X86-Assembler"></a>
    1015 <table cellpadding="1" cellspacing="1" border="0">
    1016 <tr><td valign="middle" align="left">[<a href="#Directives" title="Previous section in reading order"> &lt; </a>]</td>
    1017 <td valign="middle" align="left">[<a href="#linker" title="Next section in reading order"> &gt; </a>]</td>
    1018 <td valign="middle" align="left"> &nbsp; </td>
    1019 <td valign="middle" align="left">[<a href="#asm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1020 <td valign="middle" align="left">[<a href="#asm" title="Up section"> Up </a>]</td>
    1021 <td valign="middle" align="left">[<a href="#linker" title="Next chapter"> &gt;&gt; </a>]</td>
    1022 <td valign="middle" align="left"> &nbsp; </td>
    1023 <td valign="middle" align="left"> &nbsp; </td>
    1024 <td valign="middle" align="left"> &nbsp; </td>
    1025 <td valign="middle" align="left"> &nbsp; </td>
    1026 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1027 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1028 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1029 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1030 </tr></table>
    1031 <h2 class="section">4.5 X86 Assembler</h2>
    1032 <a name="index-assembler"></a>
    1033 
    1034 <p>All X86 opcodes are supported. Only ATT syntax is supported (source
     1052</P><P>
     1053
     1054<UL>
     1055<LI>.align n[,value]
     1056<LI>.skip n[,value]
     1057<LI>.space n[,value]
     1058<LI>.byte value1[,...]
     1059<LI>.word value1[,...]
     1060<LI>.short value1[,...]
     1061<LI>.int value1[,...]
     1062<LI>.long value1[,...]
     1063<LI>.quad immediate_value1[,...]
     1064<LI>.globl symbol
     1065<LI>.global symbol
     1066<LI>.section section
     1067<LI>.text
     1068<LI>.data
     1069<LI>.bss
     1070<LI>.fill repeat[,size[,value]]
     1071<LI>.org n
     1072<LI>.previous
     1073<LI>.string string[,...]
     1074<LI>.asciz string[,...]
     1075<LI>.ascii string[,...]
     1076</UL>
     1077<P>
     1078
     1079<HR SIZE="6">
     1080<A NAME="SEC15"></A>
     1081<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1082<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC14"> &lt; </A>]</TD>
     1083<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &gt; </A>]</TD>
     1084<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> &lt;&lt; </A>]</TD>
     1085<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC10"> Up </A>]</TD>
     1086<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &gt;&gt; </A>]</TD>
     1087<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1088<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1089<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1090<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1091</TR></TABLE>
     1092<H2> 4.5 X86 Assembler </H2>
     1093<!--docid::SEC15::-->
     1094<P>
     1095
     1096All X86 opcodes are supported. Only ATT syntax is supported (source
    10351097then destination operand order). If no size suffix is given, TinyCC
    10361098tries to guess it from the operand sizes.
    1037 </p>
    1038 <p>Currently, MMX opcodes are supported but not SSE ones.
    1039 </p>
    1040 <hr size="6">
    1041 <a name="linker"></a>
    1042 <table cellpadding="1" cellspacing="1" border="0">
    1043 <tr><td valign="middle" align="left">[<a href="#X86-Assembler" title="Previous section in reading order"> &lt; </a>]</td>
    1044 <td valign="middle" align="left">[<a href="#ELF-file-generation" title="Next section in reading order"> &gt; </a>]</td>
    1045 <td valign="middle" align="left"> &nbsp; </td>
    1046 <td valign="middle" align="left">[<a href="#asm" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1047 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    1048 <td valign="middle" align="left">[<a href="#Bounds" title="Next chapter"> &gt;&gt; </a>]</td>
    1049 <td valign="middle" align="left"> &nbsp; </td>
    1050 <td valign="middle" align="left"> &nbsp; </td>
    1051 <td valign="middle" align="left"> &nbsp; </td>
    1052 <td valign="middle" align="left"> &nbsp; </td>
    1053 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1054 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1055 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1056 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1057 </tr></table>
    1058 <a name="TinyCC-Linker"></a>
    1059 <h1 class="chapter">5. TinyCC Linker</h1>
    1060 <a name="index-linker"></a>
    1061 
    1062 <hr size="6">
    1063 <a name="ELF-file-generation"></a>
    1064 <table cellpadding="1" cellspacing="1" border="0">
    1065 <tr><td valign="middle" align="left">[<a href="#linker" title="Previous section in reading order"> &lt; </a>]</td>
    1066 <td valign="middle" align="left">[<a href="#ELF-file-loader" title="Next section in reading order"> &gt; </a>]</td>
    1067 <td valign="middle" align="left"> &nbsp; </td>
    1068 <td valign="middle" align="left">[<a href="#linker" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1069 <td valign="middle" align="left">[<a href="#linker" title="Up section"> Up </a>]</td>
    1070 <td valign="middle" align="left">[<a href="#Bounds" title="Next chapter"> &gt;&gt; </a>]</td>
    1071 <td valign="middle" align="left"> &nbsp; </td>
    1072 <td valign="middle" align="left"> &nbsp; </td>
    1073 <td valign="middle" align="left"> &nbsp; </td>
    1074 <td valign="middle" align="left"> &nbsp; </td>
    1075 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1076 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1077 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1078 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1079 </tr></table>
    1080 <h2 class="section">5.1 ELF file generation</h2>
    1081 <a name="index-ELF"></a>
    1082 
    1083 <p>TCC can directly output relocatable ELF files (object files),
     1099</P><P>
     1100
     1101Currently, MMX opcodes are supported but not SSE ones.
     1102</P><P>
     1103
     1104<A NAME="linker"></A>
     1105<HR SIZE="6">
     1106<A NAME="SEC16"></A>
     1107<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1108<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC15"> &lt; </A>]</TD>
     1109<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC17"> &gt; </A>]</TD>
     1110<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC21"> &lt;&lt; </A>]</TD>
     1111<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     1112<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC21"> &gt;&gt; </A>]</TD>
     1113<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1114<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1115<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1116<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1117</TR></TABLE>
     1118<H1> 5. TinyCC Linker </H1>
     1119<!--docid::SEC16::-->
     1120<P>
     1121
     1122<HR SIZE="6">
     1123<A NAME="SEC17"></A>
     1124<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1125<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &lt; </A>]</TD>
     1126<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC18"> &gt; </A>]</TD>
     1127<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &lt;&lt; </A>]</TD>
     1128<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> Up </A>]</TD>
     1129<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC21"> &gt;&gt; </A>]</TD>
     1130<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1131<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1132<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1133<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1134</TR></TABLE>
     1135<H2> 5.1 ELF file generation </H2>
     1136<!--docid::SEC17::-->
     1137<P>
     1138
     1139TCC can directly output relocatable ELF files (object files),
    10841140executable ELF files and dynamic ELF libraries without relying on an
    10851141external linker.
    1086 </p>
    1087 <p>Dynamic ELF libraries can be output but the C compiler does not generate
     1142</P><P>
     1143
     1144Dynamic ELF libraries can be output but the C compiler does not generate
    10881145position independent code (PIC). It means that the dynamic library
    10891146code generated by TCC cannot be factorized among processes yet.
    1090 </p>
    1091 <p>TCC linker eliminates unreferenced object code in libraries. A single pass is
     1147</P><P>
     1148
     1149TCC linker eliminates unreferenced object code in libraries. A single pass is
    10921150done on the object and library list, so the order in which object files and
    10931151libraries are specified is important (same constraint as GNU ld). No grouping
    1094 options (&lsquo;<samp>--start-group</samp>&rsquo; and &lsquo;<samp>--end-group</samp>&rsquo;) are supported.
    1095 </p>
    1096 <hr size="6">
    1097 <a name="ELF-file-loader"></a>
    1098 <table cellpadding="1" cellspacing="1" border="0">
    1099 <tr><td valign="middle" align="left">[<a href="#ELF-file-generation" title="Previous section in reading order"> &lt; </a>]</td>
    1100 <td valign="middle" align="left">[<a href="#PE_002di386-file-generation" title="Next section in reading order"> &gt; </a>]</td>
    1101 <td valign="middle" align="left"> &nbsp; </td>
    1102 <td valign="middle" align="left">[<a href="#linker" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1103 <td valign="middle" align="left">[<a href="#linker" title="Up section"> Up </a>]</td>
    1104 <td valign="middle" align="left">[<a href="#Bounds" title="Next chapter"> &gt;&gt; </a>]</td>
    1105 <td valign="middle" align="left"> &nbsp; </td>
    1106 <td valign="middle" align="left"> &nbsp; </td>
    1107 <td valign="middle" align="left"> &nbsp; </td>
    1108 <td valign="middle" align="left"> &nbsp; </td>
    1109 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1110 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1111 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1112 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1113 </tr></table>
    1114 <h2 class="section">5.2 ELF file loader</h2>
    1115 
    1116 <p>TCC can load ELF object files, archives (.a files) and dynamic
     1152options (<SAMP>`--start-group'</SAMP> and <SAMP>`--end-group'</SAMP>) are supported.
     1153</P><P>
     1154
     1155<HR SIZE="6">
     1156<A NAME="SEC18"></A>
     1157<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1158<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC17"> &lt; </A>]</TD>
     1159<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC19"> &gt; </A>]</TD>
     1160<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC19"> &lt;&lt; </A>]</TD>
     1161<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> Up </A>]</TD>
     1162<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC21"> &gt;&gt; </A>]</TD>
     1163<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1164<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1165<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1166<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1167</TR></TABLE>
     1168<H2> 5.2 ELF file loader </H2>
     1169<!--docid::SEC18::-->
     1170<P>
     1171
     1172TCC can load ELF object files, archives (.a files) and dynamic
    11171173libraries (.so).
    1118 </p>
    1119 <hr size="6">
    1120 <a name="PE_002di386-file-generation"></a>
    1121 <table cellpadding="1" cellspacing="1" border="0">
    1122 <tr><td valign="middle" align="left">[<a href="#ELF-file-loader" title="Previous section in reading order"> &lt; </a>]</td>
    1123 <td valign="middle" align="left">[<a href="#GNU-Linker-Scripts" title="Next section in reading order"> &gt; </a>]</td>
    1124 <td valign="middle" align="left"> &nbsp; </td>
    1125 <td valign="middle" align="left">[<a href="#linker" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1126 <td valign="middle" align="left">[<a href="#linker" title="Up section"> Up </a>]</td>
    1127 <td valign="middle" align="left">[<a href="#Bounds" title="Next chapter"> &gt;&gt; </a>]</td>
    1128 <td valign="middle" align="left"> &nbsp; </td>
    1129 <td valign="middle" align="left"> &nbsp; </td>
    1130 <td valign="middle" align="left"> &nbsp; </td>
    1131 <td valign="middle" align="left"> &nbsp; </td>
    1132 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1133 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1134 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1135 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1136 </tr></table>
    1137 <h2 class="section">5.3 PE-i386 file generation</h2>
    1138 <a name="index-PE_002di386"></a>
    1139 
    1140 <p>TCC for Windows supports the native Win32 executable file format (PE-i386).  It
     1174</P><P>
     1175
     1176<HR SIZE="6">
     1177<A NAME="SEC19"></A>
     1178<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1179<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC18"> &lt; </A>]</TD>
     1180<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC20"> &gt; </A>]</TD>
     1181<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC20"> &lt;&lt; </A>]</TD>
     1182<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> Up </A>]</TD>
     1183<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC21"> &gt;&gt; </A>]</TD>
     1184<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1185<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1186<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1187<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1188</TR></TABLE>
     1189<H2> 5.3 PE-i386 file generation </H2>
     1190<!--docid::SEC19::-->
     1191<P>
     1192
     1193TCC for Windows supports the native Win32 executable file format (PE-i386).  It
    11411194generates EXE files (console and gui) and DLL files.
    1142 </p>
    1143 <p>For usage on Windows, see also tcc-win32.txt.
    1144 </p>
    1145 <hr size="6">
    1146 <a name="GNU-Linker-Scripts"></a>
    1147 <table cellpadding="1" cellspacing="1" border="0">
    1148 <tr><td valign="middle" align="left">[<a href="#PE_002di386-file-generation" title="Previous section in reading order"> &lt; </a>]</td>
    1149 <td valign="middle" align="left">[<a href="#Bounds" title="Next section in reading order"> &gt; </a>]</td>
    1150 <td valign="middle" align="left"> &nbsp; </td>
    1151 <td valign="middle" align="left">[<a href="#linker" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1152 <td valign="middle" align="left">[<a href="#linker" title="Up section"> Up </a>]</td>
    1153 <td valign="middle" align="left">[<a href="#Bounds" title="Next chapter"> &gt;&gt; </a>]</td>
    1154 <td valign="middle" align="left"> &nbsp; </td>
    1155 <td valign="middle" align="left"> &nbsp; </td>
    1156 <td valign="middle" align="left"> &nbsp; </td>
    1157 <td valign="middle" align="left"> &nbsp; </td>
    1158 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1159 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1160 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1161 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1162 </tr></table>
    1163 <h2 class="section">5.4 GNU Linker Scripts</h2>
    1164 <a name="index-scripts_002c-linker"></a>
    1165 <a name="index-linker-scripts"></a>
    1166 <a name="index-GROUP_002c-linker-command"></a>
    1167 <a name="index-FILE_002c-linker-command"></a>
    1168 <a name="index-OUTPUT_005fFORMAT_002c-linker-command"></a>
    1169 <a name="index-TARGET_002c-linker-command"></a>
    1170 
    1171 <p>Because on many Linux systems some dynamic libraries (such as
    1172 &lsquo;<tt>/usr/lib/libc.so</tt>&rsquo;) are in fact GNU ld link scripts (horrible!),
     1195</P><P>
     1196
     1197For usage on Windows, see also tcc-win32.txt.
     1198</P><P>
     1199
     1200<HR SIZE="6">
     1201<A NAME="SEC20"></A>
     1202<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1203<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC19"> &lt; </A>]</TD>
     1204<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC21"> &gt; </A>]</TD>
     1205<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> &lt;&lt; </A>]</TD>
     1206<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC16"> Up </A>]</TD>
     1207<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC21"> &gt;&gt; </A>]</TD>
     1208<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1209<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1210<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1211<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1212</TR></TABLE>
     1213<H2> 5.4 GNU Linker Scripts </H2>
     1214<!--docid::SEC20::-->
     1215<P>
     1216
     1217Because on many Linux systems some dynamic libraries (such as
     1218<TT>`/usr/lib/libc.so'</TT>) are in fact GNU ld link scripts (horrible!),
    11731219the TCC linker also supports a subset of GNU ld scripts.
    1174 </p>
    1175 <p>The <code>GROUP</code> and <code>FILE</code> commands are supported. <code>OUTPUT_FORMAT</code>
    1176 and <code>TARGET</code> are ignored.
    1177 </p>
    1178 <p>Example from &lsquo;<tt>/usr/lib/libc.so</tt>&rsquo;:
    1179 </p><table><tr><td>&nbsp;</td><td><pre class="example">/* GNU ld script
     1220</P><P>
     1221
     1222The <CODE>GROUP</CODE> and <CODE>FILE</CODE> commands are supported. <CODE>OUTPUT_FORMAT</CODE>
     1223and <CODE>TARGET</CODE> are ignored.
     1224</P><P>
     1225
     1226Example from <TT>`/usr/lib/libc.so'</TT>:
     1227<TABLE><tr><td>&nbsp;</td><td class=example><pre>/* GNU ld script
    11801228   Use the shared library, but some functions are only in
    11811229   the static library, so try that secondarily.  */
    11821230GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a )
    1183 </pre></td></tr></table>
    1184 
    1185 <hr size="6">
    1186 <a name="Bounds"></a>
    1187 <table cellpadding="1" cellspacing="1" border="0">
    1188 <tr><td valign="middle" align="left">[<a href="#GNU-Linker-Scripts" title="Previous section in reading order"> &lt; </a>]</td>
    1189 <td valign="middle" align="left">[<a href="#Libtcc" title="Next section in reading order"> &gt; </a>]</td>
    1190 <td valign="middle" align="left"> &nbsp; </td>
    1191 <td valign="middle" align="left">[<a href="#linker" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1192 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    1193 <td valign="middle" align="left">[<a href="#Libtcc" title="Next chapter"> &gt;&gt; </a>]</td>
    1194 <td valign="middle" align="left"> &nbsp; </td>
    1195 <td valign="middle" align="left"> &nbsp; </td>
    1196 <td valign="middle" align="left"> &nbsp; </td>
    1197 <td valign="middle" align="left"> &nbsp; </td>
    1198 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1199 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1200 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1201 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1202 </tr></table>
    1203 <a name="TinyCC-Memory-and-Bound-checks"></a>
    1204 <h1 class="chapter">6. TinyCC Memory and Bound checks</h1>
    1205 <a name="index-bound-checks"></a>
    1206 <a name="index-memory-checks"></a>
    1207 
    1208 <p>This feature is activated with the &lsquo;<samp>-b</samp>&rsquo; (see section <a href="#Invoke">Command line invocation</a>).
    1209 </p>
    1210 <p>Note that pointer size is <em>unchanged</em> and that code generated
    1211 with bound checks is <em>fully compatible</em> with unchecked
     1231</pre></td></tr></table></P><P>
     1232
     1233<A NAME="Bounds"></A>
     1234<HR SIZE="6">
     1235<A NAME="SEC21"></A>
     1236<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1237<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC20"> &lt; </A>]</TD>
     1238<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC22"> &gt; </A>]</TD>
     1239<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC22"> &lt;&lt; </A>]</TD>
     1240<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     1241<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC22"> &gt;&gt; </A>]</TD>
     1242<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1243<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1244<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1245<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1246</TR></TABLE>
     1247<H1> 6. TinyCC Memory and Bound checks </H1>
     1248<!--docid::SEC21::-->
     1249<P>
     1250
     1251This feature is activated with the <SAMP>`-b'</SAMP> (see section <A HREF="tcc-doc.html#SEC2">2. Command line invocation</A>).
     1252</P><P>
     1253
     1254Note that pointer size is <EM>unchanged</EM> and that code generated
     1255with bound checks is <EM>fully compatible</EM> with unchecked
    12121256code. When a pointer comes from unchecked code, it is assumed to be
    12131257valid. Even very obscure C code with casts should work correctly.
    1214 </p>
    1215 <p>For more information about the ideas behind this method, see
    1216 <a href="http://www.doc.ic.ac.uk/~phjk/BoundsChecking.html">http://www.doc.ic.ac.uk/~phjk/BoundsChecking.html</a>.
    1217 </p>
    1218 <p>Here are some examples of caught errors:
    1219 </p>
    1220 <dl compact="compact">
    1221 <dt> Invalid range with standard string function:</dt>
    1222 <dd><table><tr><td>&nbsp;</td><td><pre class="example">{
     1258</P><P>
     1259
     1260For more information about the ideas behind this method, see
     1261<A HREF="http://www.doc.ic.ac.uk/~phjk/BoundsChecking.html">http://www.doc.ic.ac.uk/~phjk/BoundsChecking.html</A>.
     1262</P><P>
     1263
     1264Here are some examples of caught errors:
     1265</P><P>
     1266
     1267<DL COMPACT>
     1268
     1269<DT>Invalid range with standard string function:
     1270<DD><TABLE><tr><td>&nbsp;</td><td class=example><pre>{
    12231271    char tab[10];
    12241272    memset(tab, 0, 11);
    12251273}
    1226 </pre></td></tr></table>
    1227 
    1228 </dd>
    1229 <dt> Out of bounds-error in global or local arrays:</dt>
    1230 <dd><table><tr><td>&nbsp;</td><td><pre class="example">{
     1274</pre></td></tr></table><P>
     1275
     1276<DT>Out of bounds-error in global or local arrays:
     1277<DD><TABLE><tr><td>&nbsp;</td><td class=example><pre>{
    12311278    int tab[10];
    1232     for(i=0;i&lt;11;i++) {
     1279    for(i=0;i&#60;11;i++) {
    12331280        sum += tab[i];
    12341281    }
    12351282}
    1236 </pre></td></tr></table>
    1237 
    1238 </dd>
    1239 <dt> Out of bounds-error in malloc&rsquo;ed data:</dt>
    1240 <dd><table><tr><td>&nbsp;</td><td><pre class="example">{
     1283</pre></td></tr></table><P>
     1284
     1285<DT>Out of bounds-error in malloc'ed data:
     1286<DD><TABLE><tr><td>&nbsp;</td><td class=example><pre>{
    12411287    int *tab;
    12421288    tab = malloc(20 * sizeof(int));
    1243     for(i=0;i&lt;21;i++) {
     1289    for(i=0;i&#60;21;i++) {
    12441290        sum += tab4[i];
    12451291    }
    12461292    free(tab);
    12471293}
    1248 </pre></td></tr></table>
    1249 
    1250 </dd>
    1251 <dt> Access of freed memory:</dt>
    1252 <dd><table><tr><td>&nbsp;</td><td><pre class="example">{
     1294</pre></td></tr></table><P>
     1295
     1296<DT>Access of freed memory:
     1297<DD><TABLE><tr><td>&nbsp;</td><td class=example><pre>{
    12531298    int *tab;
    12541299    tab = malloc(20 * sizeof(int));
    12551300    free(tab);
    1256     for(i=0;i&lt;20;i++) {
     1301    for(i=0;i&#60;20;i++) {
    12571302        sum += tab4[i];
    12581303    }
    12591304}
    1260 </pre></td></tr></table>
    1261 
    1262 </dd>
    1263 <dt> Double free:</dt>
    1264 <dd><table><tr><td>&nbsp;</td><td><pre class="example">{
     1305</pre></td></tr></table><P>
     1306
     1307<DT>Double free:
     1308<DD><TABLE><tr><td>&nbsp;</td><td class=example><pre>{
    12651309    int *tab;
    12661310    tab = malloc(20 * sizeof(int));
     
    12681312    free(tab);
    12691313}
    1270 </pre></td></tr></table>
    1271 
    1272 </dd>
    1273 </dl>
    1274 
    1275 <hr size="6">
    1276 <a name="Libtcc"></a>
    1277 <table cellpadding="1" cellspacing="1" border="0">
    1278 <tr><td valign="middle" align="left">[<a href="#Bounds" title="Previous section in reading order"> &lt; </a>]</td>
    1279 <td valign="middle" align="left">[<a href="#devel" title="Next section in reading order"> &gt; </a>]</td>
    1280 <td valign="middle" align="left"> &nbsp; </td>
    1281 <td valign="middle" align="left">[<a href="#Bounds" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1282 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    1283 <td valign="middle" align="left">[<a href="#devel" title="Next chapter"> &gt;&gt; </a>]</td>
    1284 <td valign="middle" align="left"> &nbsp; </td>
    1285 <td valign="middle" align="left"> &nbsp; </td>
    1286 <td valign="middle" align="left"> &nbsp; </td>
    1287 <td valign="middle" align="left"> &nbsp; </td>
    1288 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1289 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1290 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1291 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1292 </tr></table>
    1293 <a name="The-libtcc-library"></a>
    1294 <h1 class="chapter">7. The <code>libtcc</code> library</h1>
    1295 
    1296 <p>The <code>libtcc</code> library enables you to use TCC as a backend for
     1314</pre></td></tr></table><P>
     1315
     1316</DL>
     1317<P>
     1318
     1319<A NAME="Libtcc"></A>
     1320<HR SIZE="6">
     1321<A NAME="SEC22"></A>
     1322<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1323<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC21"> &lt; </A>]</TD>
     1324<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> &gt; </A>]</TD>
     1325<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> &lt;&lt; </A>]</TD>
     1326<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     1327<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> &gt;&gt; </A>]</TD>
     1328<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1329<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1330<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1331<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1332</TR></TABLE>
     1333<H1> 7. The <CODE>libtcc</CODE> library </H1>
     1334<!--docid::SEC22::-->
     1335<P>
     1336
     1337The <CODE>libtcc</CODE> library enables you to use TCC as a backend for
    12971338dynamic code generation.
    1298 </p>
    1299 <p>Read the &lsquo;<tt>libtcc.h</tt>&rsquo; to have an overview of the API. Read
    1300 &lsquo;<tt>libtcc_test.c</tt>&rsquo; to have a very simple example.
    1301 </p>
    1302 <p>The idea consists in giving a C string containing the program you want
    1303 to compile directly to <code>libtcc</code>. Then you can access to any global
     1339</P><P>
     1340
     1341Read the <TT>`libtcc.h'</TT> to have an overview of the API. Read
     1342<TT>`libtcc_test.c'</TT> to have a very simple example.
     1343</P><P>
     1344
     1345The idea consists in giving a C string containing the program you want
     1346to compile directly to <CODE>libtcc</CODE>. Then you can access to any global
    13041347symbol (function or variable) defined.
    1305 </p>
    1306 <hr size="6">
    1307 <a name="devel"></a>
    1308 <table cellpadding="1" cellspacing="1" border="0">
    1309 <tr><td valign="middle" align="left">[<a href="#Libtcc" title="Previous section in reading order"> &lt; </a>]</td>
    1310 <td valign="middle" align="left">[<a href="#File-reading" title="Next section in reading order"> &gt; </a>]</td>
    1311 <td valign="middle" align="left"> &nbsp; </td>
    1312 <td valign="middle" align="left">[<a href="#Libtcc" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1313 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    1314 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1315 <td valign="middle" align="left"> &nbsp; </td>
    1316 <td valign="middle" align="left"> &nbsp; </td>
    1317 <td valign="middle" align="left"> &nbsp; </td>
    1318 <td valign="middle" align="left"> &nbsp; </td>
    1319 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1320 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1321 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1322 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1323 </tr></table>
    1324 <a name="Developer_0027s-guide"></a>
    1325 <h1 class="chapter">8. Developer&rsquo;s guide</h1>
    1326 
    1327 <p>This chapter gives some hints to understand how TCC works. You can skip
     1348</P><P>
     1349
     1350<A NAME="devel"></A>
     1351<HR SIZE="6">
     1352<A NAME="SEC23"></A>
     1353<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1354<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC22"> &lt; </A>]</TD>
     1355<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC24"> &gt; </A>]</TD>
     1356<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
     1357<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     1358<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1359<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1360<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1361<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1362<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1363</TR></TABLE>
     1364<H1> 8. Developer's guide </H1>
     1365<!--docid::SEC23::-->
     1366<P>
     1367
     1368This chapter gives some hints to understand how TCC works. You can skip
    13281369it if you do not intend to modify the TCC code.
    1329 </p>
    1330 <hr size="6">
    1331 <a name="File-reading"></a>
    1332 <table cellpadding="1" cellspacing="1" border="0">
    1333 <tr><td valign="middle" align="left">[<a href="#devel" title="Previous section in reading order"> &lt; </a>]</td>
    1334 <td valign="middle" align="left">[<a href="#Lexer" title="Next section in reading order"> &gt; </a>]</td>
    1335 <td valign="middle" align="left"> &nbsp; </td>
    1336 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1337 <td valign="middle" align="left">[<a href="#devel" title="Up section"> Up </a>]</td>
    1338 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1339 <td valign="middle" align="left"> &nbsp; </td>
    1340 <td valign="middle" align="left"> &nbsp; </td>
    1341 <td valign="middle" align="left"> &nbsp; </td>
    1342 <td valign="middle" align="left"> &nbsp; </td>
    1343 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1344 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1345 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1346 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1347 </tr></table>
    1348 <h2 class="section">8.1 File reading</h2>
    1349 
    1350 <p>The <code>BufferedFile</code> structure contains the context needed to read a
    1351 file, including the current line number. <code>tcc_open()</code> opens a new
    1352 file and <code>tcc_close()</code> closes it. <code>inp()</code> returns the next
     1370</P><P>
     1371
     1372<HR SIZE="6">
     1373<A NAME="SEC24"></A>
     1374<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1375<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> &lt; </A>]</TD>
     1376<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC25"> &gt; </A>]</TD>
     1377<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
     1378<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> Up </A>]</TD>
     1379<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1380<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1381<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1382<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1383<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1384</TR></TABLE>
     1385<H2> 8.1 File reading </H2>
     1386<!--docid::SEC24::-->
     1387<P>
     1388
     1389The <CODE>BufferedFile</CODE> structure contains the context needed to read a
     1390file, including the current line number. <CODE>tcc_open()</CODE> opens a new
     1391file and <CODE>tcc_close()</CODE> closes it. <CODE>inp()</CODE> returns the next
    13531392character.
    1354 </p>
    1355 <hr size="6">
    1356 <a name="Lexer"></a>
    1357 <table cellpadding="1" cellspacing="1" border="0">
    1358 <tr><td valign="middle" align="left">[<a href="#File-reading" title="Previous section in reading order"> &lt; </a>]</td>
    1359 <td valign="middle" align="left">[<a href="#Parser" title="Next section in reading order"> &gt; </a>]</td>
    1360 <td valign="middle" align="left"> &nbsp; </td>
    1361 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1362 <td valign="middle" align="left">[<a href="#devel" title="Up section"> Up </a>]</td>
    1363 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1364 <td valign="middle" align="left"> &nbsp; </td>
    1365 <td valign="middle" align="left"> &nbsp; </td>
    1366 <td valign="middle" align="left"> &nbsp; </td>
    1367 <td valign="middle" align="left"> &nbsp; </td>
    1368 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1369 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1370 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1371 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1372 </tr></table>
    1373 <h2 class="section">8.2 Lexer</h2>
    1374 
    1375 <p><code>next()</code> reads the next token in the current
    1376 file. <code>next_nomacro()</code> reads the next token without macro
     1393</P><P>
     1394
     1395<HR SIZE="6">
     1396<A NAME="SEC25"></A>
     1397<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1398<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC24"> &lt; </A>]</TD>
     1399<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC26"> &gt; </A>]</TD>
     1400<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC26"> &lt;&lt; </A>]</TD>
     1401<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> Up </A>]</TD>
     1402<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1403<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1404<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1405<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1406<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1407</TR></TABLE>
     1408<H2> 8.2 Lexer </H2>
     1409<!--docid::SEC25::-->
     1410<P>
     1411
     1412<CODE>next()</CODE> reads the next token in the current
     1413file. <CODE>next_nomacro()</CODE> reads the next token without macro
    13771414expansion.
    1378 </p>
    1379 <p><code>tok</code> contains the current token (see <code>TOK_xxx</code>)
    1380 constants. Identifiers and keywords are also keywords. <code>tokc</code>
     1415</P><P>
     1416
     1417<CODE>tok</CODE> contains the current token (see <CODE>TOK_xxx</CODE>)
     1418constants. Identifiers and keywords are also keywords. <CODE>tokc</CODE>
    13811419contains additional infos about the token (for example a constant value
    13821420if number or string token).
    1383 </p>
    1384 <hr size="6">
    1385 <a name="Parser"></a>
    1386 <table cellpadding="1" cellspacing="1" border="0">
    1387 <tr><td valign="middle" align="left">[<a href="#Lexer" title="Previous section in reading order"> &lt; </a>]</td>
    1388 <td valign="middle" align="left">[<a href="#Types" title="Next section in reading order"> &gt; </a>]</td>
    1389 <td valign="middle" align="left"> &nbsp; </td>
    1390 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1391 <td valign="middle" align="left">[<a href="#devel" title="Up section"> Up </a>]</td>
    1392 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1393 <td valign="middle" align="left"> &nbsp; </td>
    1394 <td valign="middle" align="left"> &nbsp; </td>
    1395 <td valign="middle" align="left"> &nbsp; </td>
    1396 <td valign="middle" align="left"> &nbsp; </td>
    1397 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1398 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1399 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1400 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1401 </tr></table>
    1402 <h2 class="section">8.3 Parser</h2>
    1403 
    1404 <p>The parser is hardcoded (yacc is not necessary). It does only one pass,
     1421</P><P>
     1422
     1423<HR SIZE="6">
     1424<A NAME="SEC26"></A>
     1425<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1426<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC25"> &lt; </A>]</TD>
     1427<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC27"> &gt; </A>]</TD>
     1428<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC27"> &lt;&lt; </A>]</TD>
     1429<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> Up </A>]</TD>
     1430<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1431<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1432<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1433<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1434<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1435</TR></TABLE>
     1436<H2> 8.3 Parser </H2>
     1437<!--docid::SEC26::-->
     1438<P>
     1439
     1440The parser is hardcoded (yacc is not necessary). It does only one pass,
    14051441except:
    1406 </p>
    1407 <ul>
    1408 <li> For initialized arrays with unknown size, a first pass
     1442</P><P>
     1443
     1444<UL>
     1445
     1446<LI>For initialized arrays with unknown size, a first pass
    14091447is done to count the number of elements.
    1410 
    1411 </li><li> For architectures where arguments are evaluated in
     1448<P>
     1449
     1450<LI>For architectures where arguments are evaluated in
    14121451reverse order, a first pass is done to reverse the argument order.
    1413 
    1414 </li></ul>
    1415 
    1416 <hr size="6">
    1417 <a name="Types"></a>
    1418 <table cellpadding="1" cellspacing="1" border="0">
    1419 <tr><td valign="middle" align="left">[<a href="#Parser" title="Previous section in reading order"> &lt; </a>]</td>
    1420 <td valign="middle" align="left">[<a href="#Symbols" title="Next section in reading order"> &gt; </a>]</td>
    1421 <td valign="middle" align="left"> &nbsp; </td>
    1422 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1423 <td valign="middle" align="left">[<a href="#devel" title="Up section"> Up </a>]</td>
    1424 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1425 <td valign="middle" align="left"> &nbsp; </td>
    1426 <td valign="middle" align="left"> &nbsp; </td>
    1427 <td valign="middle" align="left"> &nbsp; </td>
    1428 <td valign="middle" align="left"> &nbsp; </td>
    1429 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1430 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1431 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1432 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1433 </tr></table>
    1434 <h2 class="section">8.4 Types</h2>
    1435 
    1436 <p>The types are stored in a single &rsquo;int&rsquo; variable. It was choosen in the
     1452<P>
     1453
     1454</UL>
     1455<P>
     1456
     1457<HR SIZE="6">
     1458<A NAME="SEC27"></A>
     1459<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1460<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC26"> &lt; </A>]</TD>
     1461<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC28"> &gt; </A>]</TD>
     1462<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC28"> &lt;&lt; </A>]</TD>
     1463<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> Up </A>]</TD>
     1464<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1465<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1466<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1467<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1468<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1469</TR></TABLE>
     1470<H2> 8.4 Types </H2>
     1471<!--docid::SEC27::-->
     1472<P>
     1473
     1474The types are stored in a single 'int' variable. It was chosen in the
    14371475first stages of development when tcc was much simpler. Now, it may not
    14381476be the best solution.
    1439 </p>
    1440 <table><tr><td>&nbsp;</td><td><pre class="example">#define VT_INT        0  /* integer type */
     1477</P><P>
     1478
     1479<TABLE><tr><td>&nbsp;</td><td class=example><pre>#define VT_INT        0  /* integer type */
    14411480#define VT_BYTE       1  /* signed byte type */
    14421481#define VT_SHORT      2  /* short type */
     
    14601499#define VT_CONSTANT   0x0800  /* const modifier */
    14611500#define VT_VOLATILE   0x1000  /* volatile modifier */
    1462 #define VT_SIGNED     0x2000  /* signed type */
     1501#define VT_DEFSIGN    0x2000  /* signed type */
    14631502
    14641503#define VT_STRUCT_SHIFT 18   /* structure/enum name shift (14 bits left) */
    1465 </pre></td></tr></table>
    1466 
    1467 <p>When a reference to another type is needed (for pointers, functions and
    1468 structures), the <code>32 - VT_STRUCT_SHIFT</code> high order bits are used to
     1504</pre></td></tr></table></P><P>
     1505
     1506When a reference to another type is needed (for pointers, functions and
     1507structures), the <CODE>32 - VT_STRUCT_SHIFT</CODE> high order bits are used to
    14691508store an identifier reference.
    1470 </p>
    1471 <p>The <code>VT_UNSIGNED</code> flag can be set for chars, shorts, ints and long
     1509</P><P>
     1510
     1511The <CODE>VT_UNSIGNED</CODE> flag can be set for chars, shorts, ints and long
    14721512longs.
    1473 </p>
    1474 <p>Arrays are considered as pointers <code>VT_PTR</code> with the flag
    1475 <code>VT_ARRAY</code> set. Variable length arrays are considered as special
    1476 arrays and have flag <code>VT_VLA</code> set instead of <code>VT_ARRAY</code>.
    1477 </p>
    1478 <p>The <code>VT_BITFIELD</code> flag can be set for chars, shorts, ints and long
     1513</P><P>
     1514
     1515Arrays are considered as pointers <CODE>VT_PTR</CODE> with the flag
     1516<CODE>VT_ARRAY</CODE> set. Variable length arrays are considered as special
     1517arrays and have flag <CODE>VT_VLA</CODE> set instead of <CODE>VT_ARRAY</CODE>.
     1518</P><P>
     1519
     1520The <CODE>VT_BITFIELD</CODE> flag can be set for chars, shorts, ints and long
    14791521longs. If it is set, then the bitfield position is stored from bits
    14801522VT_STRUCT_SHIFT to VT_STRUCT_SHIFT + 5 and the bit field size is stored
    14811523from bits VT_STRUCT_SHIFT + 6 to VT_STRUCT_SHIFT + 11.
    1482 </p>
    1483 <p><code>VT_LONG</code> is never used except during parsing.
    1484 </p>
    1485 <p>During parsing, the storage of an object is also stored in the type
     1524</P><P>
     1525
     1526<CODE>VT_LONG</CODE> is never used except during parsing.
     1527</P><P>
     1528
     1529During parsing, the storage of an object is also stored in the type
    14861530integer:
    1487 </p>
    1488 <table><tr><td>&nbsp;</td><td><pre class="example">#define VT_EXTERN  0x00000080  /* extern definition */
     1531</P><P>
     1532
     1533<TABLE><tr><td>&nbsp;</td><td class=example><pre>#define VT_EXTERN  0x00000080  /* extern definition */
    14891534#define VT_STATIC  0x00000100  /* static variable */
    14901535#define VT_TYPEDEF 0x00000200  /* typedef definition */
     
    14931538#define VT_EXPORT  0x00008000  /* win32: data exported from dll */
    14941539#define VT_WEAK    0x00010000  /* win32: data exported from dll */
    1495 </pre></td></tr></table>
    1496 
    1497 <hr size="6">
    1498 <a name="Symbols"></a>
    1499 <table cellpadding="1" cellspacing="1" border="0">
    1500 <tr><td valign="middle" align="left">[<a href="#Types" title="Previous section in reading order"> &lt; </a>]</td>
    1501 <td valign="middle" align="left">[<a href="#Sections" title="Next section in reading order"> &gt; </a>]</td>
    1502 <td valign="middle" align="left"> &nbsp; </td>
    1503 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1504 <td valign="middle" align="left">[<a href="#devel" title="Up section"> Up </a>]</td>
    1505 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1506 <td valign="middle" align="left"> &nbsp; </td>
    1507 <td valign="middle" align="left"> &nbsp; </td>
    1508 <td valign="middle" align="left"> &nbsp; </td>
    1509 <td valign="middle" align="left"> &nbsp; </td>
    1510 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1511 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1512 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1513 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1514 </tr></table>
    1515 <h2 class="section">8.5 Symbols</h2>
    1516 
    1517 <p>All symbols are stored in hashed symbol stacks. Each symbol stack
    1518 contains <code>Sym</code> structures.
    1519 </p>
    1520 <p><code>Sym.v</code> contains the symbol name (remember
    1521 an idenfier is also a token, so a string is never necessary to store
    1522 it). <code>Sym.t</code> gives the type of the symbol. <code>Sym.r</code> is usually
    1523 the register in which the corresponding variable is stored. <code>Sym.c</code> is
     1540</pre></td></tr></table></P><P>
     1541
     1542<HR SIZE="6">
     1543<A NAME="SEC28"></A>
     1544<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1545<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC27"> &lt; </A>]</TD>
     1546<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC29"> &gt; </A>]</TD>
     1547<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC29"> &lt;&lt; </A>]</TD>
     1548<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> Up </A>]</TD>
     1549<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1550<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1551<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1552<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1553<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1554</TR></TABLE>
     1555<H2> 8.5 Symbols </H2>
     1556<!--docid::SEC28::-->
     1557<P>
     1558
     1559All symbols are stored in hashed symbol stacks. Each symbol stack
     1560contains <CODE>Sym</CODE> structures.
     1561</P><P>
     1562
     1563<CODE>Sym.v</CODE> contains the symbol name (remember
     1564an identifier is also a token, so a string is never necessary to store
     1565it). <CODE>Sym.t</CODE> gives the type of the symbol. <CODE>Sym.r</CODE> is usually
     1566the register in which the corresponding variable is stored. <CODE>Sym.c</CODE> is
    15241567usually a constant associated to the symbol like its address for normal
    15251568symbols, and the number of entries for symbols representing arrays.
    1526 Variable length array types use <code>Sym.c</code> as a location on the stack
     1569Variable length array types use <CODE>Sym.c</CODE> as a location on the stack
    15271570which holds the runtime sizeof for the type.
    1528 </p>
    1529 <p>Four main symbol stacks are defined:
    1530 </p>
    1531 <dl compact="compact">
    1532 <dt> <code>define_stack</code></dt>
    1533 <dd><p>for the macros (<code>#define</code>s).
    1534 </p>
    1535 </dd>
    1536 <dt> <code>global_stack</code></dt>
    1537 <dd><p>for the global variables, functions and types.
    1538 </p>
    1539 </dd>
    1540 <dt> <code>local_stack</code></dt>
    1541 <dd><p>for the local variables, functions and types.
    1542 </p>
    1543 </dd>
    1544 <dt> <code>global_label_stack</code></dt>
    1545 <dd><p>for the local labels (for <code>goto</code>).
    1546 </p>
    1547 </dd>
    1548 <dt> <code>label_stack</code></dt>
    1549 <dd><p>for GCC block local labels (see the <code>__label__</code> keyword).
    1550 </p>
    1551 </dd>
    1552 </dl>
    1553 
    1554 <p><code>sym_push()</code> is used to add a new symbol in the local symbol
     1571</P><P>
     1572
     1573Four main symbol stacks are defined:
     1574</P><P>
     1575
     1576<DL COMPACT>
     1577
     1578<DT><CODE>define_stack</CODE>
     1579<DD>for the macros (<CODE>#define</CODE>s).
     1580<P>
     1581
     1582<DT><CODE>global_stack</CODE>
     1583<DD>for the global variables, functions and types.
     1584<P>
     1585
     1586<DT><CODE>local_stack</CODE>
     1587<DD>for the local variables, functions and types.
     1588<P>
     1589
     1590<DT><CODE>global_label_stack</CODE>
     1591<DD>for the local labels (for <CODE>goto</CODE>).
     1592<P>
     1593
     1594<DT><CODE>label_stack</CODE>
     1595<DD>for GCC block local labels (see the <CODE>__label__</CODE> keyword).
     1596<P>
     1597
     1598</DL>
     1599<P>
     1600
     1601<CODE>sym_push()</CODE> is used to add a new symbol in the local symbol
    15551602stack. If no local symbol stack is active, it is added in the global
    15561603symbol stack.
    1557 </p>
    1558 <p><code>sym_pop(st,b)</code> pops symbols from the symbol stack <var>st</var> until
    1559 the symbol <var>b</var> is on the top of stack. If <var>b</var> is NULL, the stack
     1604</P><P>
     1605
     1606<CODE>sym_pop(st,b)</CODE> pops symbols from the symbol stack <VAR>st</VAR> until
     1607the symbol <VAR>b</VAR> is on the top of stack. If <VAR>b</VAR> is NULL, the stack
    15601608is emptied.
    1561 </p>
    1562 <p><code>sym_find(v)</code> return the symbol associated to the identifier
    1563 <var>v</var>. The local stack is searched first from top to bottom, then the
     1609</P><P>
     1610
     1611<CODE>sym_find(v)</CODE> return the symbol associated to the identifier
     1612<VAR>v</VAR>. The local stack is searched first from top to bottom, then the
    15641613global stack.
    1565 </p>
    1566 <hr size="6">
    1567 <a name="Sections"></a>
    1568 <table cellpadding="1" cellspacing="1" border="0">
    1569 <tr><td valign="middle" align="left">[<a href="#Symbols" title="Previous section in reading order"> &lt; </a>]</td>
    1570 <td valign="middle" align="left">[<a href="#Code-generation" title="Next section in reading order"> &gt; </a>]</td>
    1571 <td valign="middle" align="left"> &nbsp; </td>
    1572 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1573 <td valign="middle" align="left">[<a href="#devel" title="Up section"> Up </a>]</td>
    1574 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1575 <td valign="middle" align="left"> &nbsp; </td>
    1576 <td valign="middle" align="left"> &nbsp; </td>
    1577 <td valign="middle" align="left"> &nbsp; </td>
    1578 <td valign="middle" align="left"> &nbsp; </td>
    1579 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1580 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1581 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1582 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1583 </tr></table>
    1584 <h2 class="section">8.6 Sections</h2>
    1585 
    1586 <p>The generated code and datas are written in sections. The structure
    1587 <code>Section</code> contains all the necessary information for a given
    1588 section. <code>new_section()</code> creates a new section. ELF file semantics
     1614</P><P>
     1615
     1616<HR SIZE="6">
     1617<A NAME="SEC29"></A>
     1618<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1619<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC28"> &lt; </A>]</TD>
     1620<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC30"> &gt; </A>]</TD>
     1621<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC30"> &lt;&lt; </A>]</TD>
     1622<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> Up </A>]</TD>
     1623<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1624<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1625<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1626<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1627<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1628</TR></TABLE>
     1629<H2> 8.6 Sections </H2>
     1630<!--docid::SEC29::-->
     1631<P>
     1632
     1633The generated code and data are written in sections. The structure
     1634<CODE>Section</CODE> contains all the necessary information for a given
     1635section. <CODE>new_section()</CODE> creates a new section. ELF file semantics
    15891636is assumed for each section.
    1590 </p>
    1591 <p>The following sections are predefined:
    1592 </p>
    1593 <dl compact="compact">
    1594 <dt> <code>text_section</code></dt>
    1595 <dd><p>is the section containing the generated code. <var>ind</var> contains the
     1637</P><P>
     1638
     1639The following sections are predefined:
     1640</P><P>
     1641
     1642<DL COMPACT>
     1643
     1644<DT><CODE>text_section</CODE>
     1645<DD>is the section containing the generated code. <VAR>ind</VAR> contains the
    15961646current position in the code section.
    1597 </p>
    1598 </dd>
    1599 <dt> <code>data_section</code></dt>
    1600 <dd><p>contains initialized data
    1601 </p>
    1602 </dd>
    1603 <dt> <code>bss_section</code></dt>
    1604 <dd><p>contains uninitialized data
    1605 </p>
    1606 </dd>
    1607 <dt> <code>bounds_section</code></dt>
    1608 <dt> <code>lbounds_section</code></dt>
    1609 <dd><p>are used when bound checking is activated
    1610 </p>
    1611 </dd>
    1612 <dt> <code>stab_section</code></dt>
    1613 <dt> <code>stabstr_section</code></dt>
    1614 <dd><p>are used when debugging is actived to store debug information
    1615 </p>
    1616 </dd>
    1617 <dt> <code>symtab_section</code></dt>
    1618 <dt> <code>strtab_section</code></dt>
    1619 <dd><p>contain the exported symbols (currently only used for debugging).
    1620 </p>
    1621 </dd>
    1622 </dl>
    1623 
    1624 <hr size="6">
    1625 <a name="Code-generation"></a>
    1626 <table cellpadding="1" cellspacing="1" border="0">
    1627 <tr><td valign="middle" align="left">[<a href="#Sections" title="Previous section in reading order"> &lt; </a>]</td>
    1628 <td valign="middle" align="left">[<a href="#Introduction-2" title="Next section in reading order"> &gt; </a>]</td>
    1629 <td valign="middle" align="left"> &nbsp; </td>
    1630 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1631 <td valign="middle" align="left">[<a href="#devel" title="Up section"> Up </a>]</td>
    1632 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1633 <td valign="middle" align="left"> &nbsp; </td>
    1634 <td valign="middle" align="left"> &nbsp; </td>
    1635 <td valign="middle" align="left"> &nbsp; </td>
    1636 <td valign="middle" align="left"> &nbsp; </td>
    1637 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1638 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1639 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1640 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1641 </tr></table>
    1642 <h2 class="section">8.7 Code generation</h2>
    1643 <a name="index-code-generation"></a>
    1644 
    1645 <hr size="6">
    1646 <a name="Introduction-2"></a>
    1647 <table cellpadding="1" cellspacing="1" border="0">
    1648 <tr><td valign="middle" align="left">[<a href="#Code-generation" title="Previous section in reading order"> &lt; </a>]</td>
    1649 <td valign="middle" align="left">[<a href="#The-value-stack" title="Next section in reading order"> &gt; </a>]</td>
    1650 <td valign="middle" align="left"> &nbsp; </td>
    1651 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1652 <td valign="middle" align="left">[<a href="#Code-generation" title="Up section"> Up </a>]</td>
    1653 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1654 <td valign="middle" align="left"> &nbsp; </td>
    1655 <td valign="middle" align="left"> &nbsp; </td>
    1656 <td valign="middle" align="left"> &nbsp; </td>
    1657 <td valign="middle" align="left"> &nbsp; </td>
    1658 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1659 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1660 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1661 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1662 </tr></table>
    1663 <h3 class="subsection">8.7.1 Introduction</h3>
    1664 
    1665 <p>The TCC code generator directly generates linked binary code in one
     1647<P>
     1648
     1649<DT><CODE>data_section</CODE>
     1650<DD>contains initialized data
     1651<P>
     1652
     1653<DT><CODE>bss_section</CODE>
     1654<DD>contains uninitialized data
     1655<P>
     1656
     1657<DT><CODE>bounds_section</CODE>
     1658<DD><DT><CODE>lbounds_section</CODE>
     1659<DD>are used when bound checking is activated
     1660<P>
     1661
     1662<DT><CODE>stab_section</CODE>
     1663<DD><DT><CODE>stabstr_section</CODE>
     1664<DD>are used when debugging is active to store debug information
     1665<P>
     1666
     1667<DT><CODE>symtab_section</CODE>
     1668<DD><DT><CODE>strtab_section</CODE>
     1669<DD>contain the exported symbols (currently only used for debugging).
     1670<P>
     1671
     1672</DL>
     1673<P>
     1674
     1675<HR SIZE="6">
     1676<A NAME="SEC30"></A>
     1677<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1678<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC29"> &lt; </A>]</TD>
     1679<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC31"> &gt; </A>]</TD>
     1680<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &lt;&lt; </A>]</TD>
     1681<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> Up </A>]</TD>
     1682<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &gt;&gt; </A>]</TD>
     1683<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1684<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1685<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1686<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1687</TR></TABLE>
     1688<H2> 8.7 Code generation </H2>
     1689<!--docid::SEC30::-->
     1690<P>
     1691
     1692<HR SIZE="6">
     1693<A NAME="SEC31"></A>
     1694<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1695<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC30"> &lt; </A>]</TD>
     1696<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC32"> &gt; </A>]</TD>
     1697<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &lt;&lt; </A>]</TD>
     1698<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC30"> Up </A>]</TD>
     1699<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &gt;&gt; </A>]</TD>
     1700<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1701<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1702<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1703<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1704</TR></TABLE>
     1705<H3> 8.7.1 Introduction </H3>
     1706<!--docid::SEC31::-->
     1707<P>
     1708
     1709The TCC code generator directly generates linked binary code in one
    16661710pass. It is rather unusual these days (see gcc for example which
    16671711generates text assembly), but it can be very fast and surprisingly
    16681712little complicated.
    1669 </p>
    1670 <p>The TCC code generator is register based. Optimization is only done at
     1713</P><P>
     1714
     1715The TCC code generator is register based. Optimization is only done at
    16711716the expression level. No intermediate representation of expression is
    1672 kept except the current values stored in the <em>value stack</em>.
    1673 </p>
    1674 <p>On x86, three temporary registers are used. When more registers are
     1717kept except the current values stored in the <EM>value stack</EM>.
     1718</P><P>
     1719
     1720On x86, three temporary registers are used. When more registers are
    16751721needed, one register is spilled into a new temporary variable on the stack.
    1676 </p>
    1677 <hr size="6">
    1678 <a name="The-value-stack"></a>
    1679 <table cellpadding="1" cellspacing="1" border="0">
    1680 <tr><td valign="middle" align="left">[<a href="#Introduction-2" title="Previous section in reading order"> &lt; </a>]</td>
    1681 <td valign="middle" align="left">[<a href="#Manipulating-the-value-stack" title="Next section in reading order"> &gt; </a>]</td>
    1682 <td valign="middle" align="left"> &nbsp; </td>
    1683 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1684 <td valign="middle" align="left">[<a href="#Code-generation" title="Up section"> Up </a>]</td>
    1685 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1686 <td valign="middle" align="left"> &nbsp; </td>
    1687 <td valign="middle" align="left"> &nbsp; </td>
    1688 <td valign="middle" align="left"> &nbsp; </td>
    1689 <td valign="middle" align="left"> &nbsp; </td>
    1690 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1691 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1692 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1693 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1694 </tr></table>
    1695 <h3 class="subsection">8.7.2 The value stack</h3>
    1696 <a name="index-value-stack_002c-introduction"></a>
    1697 
    1698 <p>When an expression is parsed, its value is pushed on the value stack
    1699 (<var>vstack</var>). The top of the value stack is <var>vtop</var>. Each value
    1700 stack entry is the structure <code>SValue</code>.
    1701 </p>
    1702 <p><code>SValue.t</code> is the type. <code>SValue.r</code> indicates how the value is
     1722</P><P>
     1723
     1724<HR SIZE="6">
     1725<A NAME="SEC32"></A>
     1726<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1727<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC31"> &lt; </A>]</TD>
     1728<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC33"> &gt; </A>]</TD>
     1729<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC33"> &lt;&lt; </A>]</TD>
     1730<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC30"> Up </A>]</TD>
     1731<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &gt;&gt; </A>]</TD>
     1732<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1733<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1734<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1735<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1736</TR></TABLE>
     1737<H3> 8.7.2 The value stack </H3>
     1738<!--docid::SEC32::-->
     1739<P>
     1740
     1741When an expression is parsed, its value is pushed on the value stack
     1742(<VAR>vstack</VAR>). The top of the value stack is <VAR>vtop</VAR>. Each value
     1743stack entry is the structure <CODE>SValue</CODE>.
     1744</P><P>
     1745
     1746<CODE>SValue.t</CODE> is the type. <CODE>SValue.r</CODE> indicates how the value is
    17031747currently stored in the generated code. It is usually a CPU register
    1704 index (<code>REG_xxx</code> constants), but additional values and flags are
     1748index (<CODE>REG_xxx</CODE> constants), but additional values and flags are
    17051749defined:
    1706 </p>
    1707 <table><tr><td>&nbsp;</td><td><pre class="example">#define VT_CONST     0x00f0
     1750</P><P>
     1751
     1752<TABLE><tr><td>&nbsp;</td><td class=example><pre>#define VT_CONST     0x00f0
    17081753#define VT_LLOCAL    0x00f1
    17091754#define VT_LOCAL     0x00f2
     
    17201765#define VT_LVAL_UNSIGNED 0x4000
    17211766#define VT_LVAL_TYPE     (VT_LVAL_BYTE | VT_LVAL_SHORT | VT_LVAL_UNSIGNED)
    1722 </pre></td></tr></table>
    1723 
    1724 <dl compact="compact">
    1725 <dt> <code>VT_CONST</code></dt>
    1726 <dd><p>indicates that the value is a constant. It is stored in the union
    1727 <code>SValue.c</code>, depending on its type.
    1728 </p>
    1729 </dd>
    1730 <dt> <code>VT_LOCAL</code></dt>
    1731 <dd><p>indicates a local variable pointer at offset <code>SValue.c.i</code> in the
     1767</pre></td></tr></table></P><P>
     1768
     1769<DL COMPACT>
     1770
     1771<DT><CODE>VT_CONST</CODE>
     1772<DD>indicates that the value is a constant. It is stored in the union
     1773<CODE>SValue.c</CODE>, depending on its type.
     1774<P>
     1775
     1776<DT><CODE>VT_LOCAL</CODE>
     1777<DD>indicates a local variable pointer at offset <CODE>SValue.c.i</CODE> in the
    17321778stack.
    1733 </p>
    1734 </dd>
    1735 <dt> <code>VT_CMP</code></dt>
    1736 <dd><p>indicates that the value is actually stored in the CPU flags (i.e. the
     1779<P>
     1780
     1781<DT><CODE>VT_CMP</CODE>
     1782<DD>indicates that the value is actually stored in the CPU flags (i.e. the
    17371783value is the consequence of a test). The value is either 0 or 1. The
    1738 actual CPU flags used is indicated in <code>SValue.c.i</code>.
    1739 </p>
    1740 <p>If any code is generated which destroys the CPU flags, this value MUST be
     1784actual CPU flags used is indicated in <CODE>SValue.c.i</CODE>.
     1785<P>
     1786
     1787If any code is generated which destroys the CPU flags, this value MUST be
    17411788put in a normal register.
    1742 </p>
    1743 </dd>
    1744 <dt> <code>VT_JMP</code></dt>
    1745 <dt> <code>VT_JMPI</code></dt>
    1746 <dd><p>indicates that the value is the consequence of a conditional jump. For VT_JMP,
     1789</P><P>
     1790
     1791<DT><CODE>VT_JMP</CODE>
     1792<DD><DT><CODE>VT_JMPI</CODE>
     1793<DD>indicates that the value is the consequence of a conditional jump. For VT_JMP,
    17471794it is 1 if the jump is taken, 0 otherwise. For VT_JMPI it is inverted.
    1748 </p>
    1749 <p>These values are used to compile the <code>||</code> and <code>&amp;&amp;</code> logical
     1795<P>
     1796
     1797These values are used to compile the <CODE>||</CODE> and <CODE>&#38;&#38;</CODE> logical
    17501798operators.
    1751 </p>
    1752 <p>If any code is generated, this value MUST be put in a normal
    1753 register. Otherwise, the generated code won&rsquo;t be executed if the jump is
     1799</P><P>
     1800
     1801If any code is generated, this value MUST be put in a normal
     1802register. Otherwise, the generated code won't be executed if the jump is
    17541803taken.
    1755 </p>
    1756 </dd>
    1757 <dt> <code>VT_LVAL</code></dt>
    1758 <dd><p>is a flag indicating that the value is actually an lvalue (left value of
     1804</P><P>
     1805
     1806<DT><CODE>VT_LVAL</CODE>
     1807<DD>is a flag indicating that the value is actually an lvalue (left value of
    17591808an assignment). It means that the value stored is actually a pointer to
    17601809the wanted value.
    1761 </p>
    1762 <p>Understanding the use <code>VT_LVAL</code> is very important if you want to
     1810<P>
     1811
     1812Understanding the use <CODE>VT_LVAL</CODE> is very important if you want to
    17631813understand how TCC works.
    1764 </p>
    1765 </dd>
    1766 <dt> <code>VT_LVAL_BYTE</code></dt>
    1767 <dt> <code>VT_LVAL_SHORT</code></dt>
    1768 <dt> <code>VT_LVAL_UNSIGNED</code></dt>
    1769 <dd><p>if the lvalue has an integer type, then these flags give its real
     1814</P><P>
     1815
     1816<DT><CODE>VT_LVAL_BYTE</CODE>
     1817<DD><DT><CODE>VT_LVAL_SHORT</CODE>
     1818<DD><DT><CODE>VT_LVAL_UNSIGNED</CODE>
     1819<DD>if the lvalue has an integer type, then these flags give its real
    17701820type. The type alone is not enough in case of cast optimisations.
    1771 </p>
    1772 </dd>
    1773 <dt> <code>VT_LLOCAL</code></dt>
    1774 <dd><p>is a saved lvalue on the stack. <code>VT_LLOCAL</code> should be eliminated
    1775 ASAP because its semantics are rather complicated.
    1776 </p>
    1777 </dd>
    1778 <dt> <code>VT_MUSTCAST</code></dt>
    1779 <dd><p>indicates that a cast to the value type must be performed if the value
     1821<P>
     1822
     1823<DT><CODE>VT_LLOCAL</CODE>
     1824<DD>is a saved lvalue on the stack. <CODE>VT_LVAL</CODE> must also be set with
     1825<CODE>VT_LLOCAL</CODE>. <CODE>VT_LLOCAL</CODE> can arise when a <CODE>VT_LVAL</CODE> in
     1826a register has to be saved to the stack, or it can come from an
     1827architecture-specific calling convention.
     1828<P>
     1829
     1830<DT><CODE>VT_MUSTCAST</CODE>
     1831<DD>indicates that a cast to the value type must be performed if the value
    17801832is used (lazy casting).
    1781 </p>
    1782 </dd>
    1783 <dt> <code>VT_SYM</code></dt>
    1784 <dd><p>indicates that the symbol <code>SValue.sym</code> must be added to the constant.
    1785 </p>
    1786 </dd>
    1787 <dt> <code>VT_MUSTBOUND</code></dt>
    1788 <dt> <code>VT_BOUNDED</code></dt>
    1789 <dd><p>are only used for optional bound checking.
    1790 </p>
    1791 </dd>
    1792 </dl>
    1793 
    1794 <hr size="6">
    1795 <a name="Manipulating-the-value-stack"></a>
    1796 <table cellpadding="1" cellspacing="1" border="0">
    1797 <tr><td valign="middle" align="left">[<a href="#The-value-stack" title="Previous section in reading order"> &lt; </a>]</td>
    1798 <td valign="middle" align="left">[<a href="#CPU-dependent-code-generation" title="Next section in reading order"> &gt; </a>]</td>
    1799 <td valign="middle" align="left"> &nbsp; </td>
    1800 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1801 <td valign="middle" align="left">[<a href="#Code-generation" title="Up section"> Up </a>]</td>
    1802 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1803 <td valign="middle" align="left"> &nbsp; </td>
    1804 <td valign="middle" align="left"> &nbsp; </td>
    1805 <td valign="middle" align="left"> &nbsp; </td>
    1806 <td valign="middle" align="left"> &nbsp; </td>
    1807 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1808 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1809 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1810 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1811 </tr></table>
    1812 <h3 class="subsection">8.7.3 Manipulating the value stack</h3>
    1813 <a name="index-value-stack"></a>
    1814 
    1815 <p><code>vsetc()</code> and <code>vset()</code> pushes a new value on the value
    1816 stack. If the previous <var>vtop</var> was stored in a very unsafe place(for
     1833<P>
     1834
     1835<DT><CODE>VT_SYM</CODE>
     1836<DD>indicates that the symbol <CODE>SValue.sym</CODE> must be added to the constant.
     1837<P>
     1838
     1839<DT><CODE>VT_MUSTBOUND</CODE>
     1840<DD><DT><CODE>VT_BOUNDED</CODE>
     1841<DD>are only used for optional bound checking.
     1842<P>
     1843
     1844</DL>
     1845<P>
     1846
     1847<HR SIZE="6">
     1848<A NAME="SEC33"></A>
     1849<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1850<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC32"> &lt; </A>]</TD>
     1851<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC34"> &gt; </A>]</TD>
     1852<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC34"> &lt;&lt; </A>]</TD>
     1853<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC30"> Up </A>]</TD>
     1854<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &gt;&gt; </A>]</TD>
     1855<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1856<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1857<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1858<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1859</TR></TABLE>
     1860<H3> 8.7.3 Manipulating the value stack </H3>
     1861<!--docid::SEC33::-->
     1862<P>
     1863
     1864<CODE>vsetc()</CODE> and <CODE>vset()</CODE> pushes a new value on the value
     1865stack. If the previous <VAR>vtop</VAR> was stored in a very unsafe place(for
    18171866example in the CPU flags), then some code is generated to put the
    1818 previous <var>vtop</var> in a safe storage.
    1819 </p>
    1820 <p><code>vpop()</code> pops <var>vtop</var>. In some cases, it also generates cleanup
     1867previous <VAR>vtop</VAR> in a safe storage.
     1868</P><P>
     1869
     1870<CODE>vpop()</CODE> pops <VAR>vtop</VAR>. In some cases, it also generates cleanup
    18211871code (for example if stacked floating point registers are used as on
    18221872x86).
    1823 </p>
    1824 <p>The <code>gv(rc)</code> function generates code to evaluate <var>vtop</var> (the
    1825 top value of the stack) into registers. <var>rc</var> selects in which
    1826 register class the value should be put. <code>gv()</code> is the <em>most
    1827 important function</em> of the code generator.
    1828 </p>
    1829 <p><code>gv2()</code> is the same as <code>gv()</code> but for the top two stack
     1873</P><P>
     1874
     1875The <CODE>gv(rc)</CODE> function generates code to evaluate <VAR>vtop</VAR> (the
     1876top value of the stack) into registers. <VAR>rc</VAR> selects in which
     1877register class the value should be put. <CODE>gv()</CODE> is the <EM>most
     1878important function</EM> of the code generator.
     1879</P><P>
     1880
     1881<CODE>gv2()</CODE> is the same as <CODE>gv()</CODE> but for the top two stack
    18301882entries.
    1831 </p>
    1832 <hr size="6">
    1833 <a name="CPU-dependent-code-generation"></a>
    1834 <table cellpadding="1" cellspacing="1" border="0">
    1835 <tr><td valign="middle" align="left">[<a href="#Manipulating-the-value-stack" title="Previous section in reading order"> &lt; </a>]</td>
    1836 <td valign="middle" align="left">[<a href="#Optimizations-done" title="Next section in reading order"> &gt; </a>]</td>
    1837 <td valign="middle" align="left"> &nbsp; </td>
    1838 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1839 <td valign="middle" align="left">[<a href="#Code-generation" title="Up section"> Up </a>]</td>
    1840 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1841 <td valign="middle" align="left"> &nbsp; </td>
    1842 <td valign="middle" align="left"> &nbsp; </td>
    1843 <td valign="middle" align="left"> &nbsp; </td>
    1844 <td valign="middle" align="left"> &nbsp; </td>
    1845 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1846 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1847 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1848 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1849 </tr></table>
    1850 <h3 class="subsection">8.7.4 CPU dependent code generation</h3>
    1851 <a name="index-CPU-dependent"></a>
    1852 <p>See the &lsquo;<tt>i386-gen.c</tt>&rsquo; file to have an example.
    1853 </p>
    1854 <dl compact="compact">
    1855 <dt> <code>load()</code></dt>
    1856 <dd><p>must generate the code needed to load a stack value into a register.
    1857 </p>
    1858 </dd>
    1859 <dt> <code>store()</code></dt>
    1860 <dd><p>must generate the code needed to store a register into a stack value
     1883</P><P>
     1884
     1885<HR SIZE="6">
     1886<A NAME="SEC34"></A>
     1887<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1888<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC33"> &lt; </A>]</TD>
     1889<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &gt; </A>]</TD>
     1890<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &lt;&lt; </A>]</TD>
     1891<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC30"> Up </A>]</TD>
     1892<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &gt;&gt; </A>]</TD>
     1893<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1894<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1895<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1896<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1897</TR></TABLE>
     1898<H3> 8.7.4 CPU dependent code generation </H3>
     1899<!--docid::SEC34::-->
     1900See the <TT>`i386-gen.c'</TT> file to have an example.
     1901<P>
     1902
     1903<DL COMPACT>
     1904
     1905<DT><CODE>load()</CODE>
     1906<DD>must generate the code needed to load a stack value into a register.
     1907<P>
     1908
     1909<DT><CODE>store()</CODE>
     1910<DD>must generate the code needed to store a register into a stack value
    18611911lvalue.
    1862 </p>
    1863 </dd>
    1864 <dt> <code>gfunc_start()</code></dt>
    1865 <dt> <code>gfunc_param()</code></dt>
    1866 <dt> <code>gfunc_call()</code></dt>
    1867 <dd><p>should generate a function call
    1868 </p>
    1869 </dd>
    1870 <dt> <code>gfunc_prolog()</code></dt>
    1871 <dt> <code>gfunc_epilog()</code></dt>
    1872 <dd><p>should generate a function prolog/epilog.
    1873 </p>
    1874 </dd>
    1875 <dt> <code>gen_opi(op)</code></dt>
    1876 <dd><p>must generate the binary integer operation <var>op</var> on the two top
    1877 entries of the stack which are guaranted to contain integer types.
    1878 </p>
    1879 <p>The result value should be put on the stack.
    1880 </p>
    1881 </dd>
    1882 <dt> <code>gen_opf(op)</code></dt>
    1883 <dd><p>same as <code>gen_opi()</code> for floating point operations. The two top
    1884 entries of the stack are guaranted to contain floating point values of
     1912<P>
     1913
     1914<DT><CODE>gfunc_start()</CODE>
     1915<DD><DT><CODE>gfunc_param()</CODE>
     1916<DD><DT><CODE>gfunc_call()</CODE>
     1917<DD>should generate a function call
     1918<P>
     1919
     1920<DT><CODE>gfunc_prolog()</CODE>
     1921<DD><DT><CODE>gfunc_epilog()</CODE>
     1922<DD>should generate a function prolog/epilog.
     1923<P>
     1924
     1925<DT><CODE>gen_opi(op)</CODE>
     1926<DD>must generate the binary integer operation <VAR>op</VAR> on the two top
     1927entries of the stack which are guaranteed to contain integer types.
     1928<P>
     1929
     1930The result value should be put on the stack.
     1931</P><P>
     1932
     1933<DT><CODE>gen_opf(op)</CODE>
     1934<DD>same as <CODE>gen_opi()</CODE> for floating point operations. The two top
     1935entries of the stack are guaranteed to contain floating point values of
    18851936same types.
    1886 </p>
    1887 </dd>
    1888 <dt> <code>gen_cvt_itof()</code></dt>
    1889 <dd><p>integer to floating point conversion.
    1890 </p>
    1891 </dd>
    1892 <dt> <code>gen_cvt_ftoi()</code></dt>
    1893 <dd><p>floating point to integer conversion.
    1894 </p>
    1895 </dd>
    1896 <dt> <code>gen_cvt_ftof()</code></dt>
    1897 <dd><p>floating point to floating point of different size conversion.
    1898 </p>
    1899 </dd>
    1900 <dt> <code>gen_bounded_ptr_add()</code></dt>
    1901 <dt> <code>gen_bounded_ptr_deref()</code></dt>
    1902 <dd><p>are only used for bounds checking.
    1903 </p>
    1904 </dd>
    1905 </dl>
    1906 
    1907 <hr size="6">
    1908 <a name="Optimizations-done"></a>
    1909 <table cellpadding="1" cellspacing="1" border="0">
    1910 <tr><td valign="middle" align="left">[<a href="#CPU-dependent-code-generation" title="Previous section in reading order"> &lt; </a>]</td>
    1911 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next section in reading order"> &gt; </a>]</td>
    1912 <td valign="middle" align="left"> &nbsp; </td>
    1913 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1914 <td valign="middle" align="left">[<a href="#devel" title="Up section"> Up </a>]</td>
    1915 <td valign="middle" align="left">[<a href="#Concept-Index" title="Next chapter"> &gt;&gt; </a>]</td>
    1916 <td valign="middle" align="left"> &nbsp; </td>
    1917 <td valign="middle" align="left"> &nbsp; </td>
    1918 <td valign="middle" align="left"> &nbsp; </td>
    1919 <td valign="middle" align="left"> &nbsp; </td>
    1920 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1921 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1922 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1923 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1924 </tr></table>
    1925 <h2 class="section">8.8 Optimizations done</h2>
    1926 <a name="index-optimizations"></a>
    1927 <a name="index-constant-propagation"></a>
    1928 <a name="index-strength-reduction"></a>
    1929 <a name="index-comparison-operators"></a>
    1930 <a name="index-caching-processor-flags"></a>
    1931 <a name="index-flags_002c-caching"></a>
    1932 <a name="index-jump-optimization"></a>
    1933 <p>Constant propagation is done for all operations. Multiplications and
     1937<P>
     1938
     1939<DT><CODE>gen_cvt_itof()</CODE>
     1940<DD>integer to floating point conversion.
     1941<P>
     1942
     1943<DT><CODE>gen_cvt_ftoi()</CODE>
     1944<DD>floating point to integer conversion.
     1945<P>
     1946
     1947<DT><CODE>gen_cvt_ftof()</CODE>
     1948<DD>floating point to floating point of different size conversion.
     1949<P>
     1950
     1951<DT><CODE>gen_bounded_ptr_add()</CODE>
     1952<DD><DT><CODE>gen_bounded_ptr_deref()</CODE>
     1953<DD>are only used for bounds checking.
     1954<P>
     1955
     1956</DL>
     1957<P>
     1958
     1959<HR SIZE="6">
     1960<A NAME="SEC35"></A>
     1961<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1962<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC34"> &lt; </A>]</TD>
     1963<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36"> &gt; </A>]</TD>
     1964<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
     1965<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC23"> Up </A>]</TD>
     1966<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1967<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1968<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1969<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1970<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1971</TR></TABLE>
     1972<H2> 8.8 Optimizations done </H2>
     1973<!--docid::SEC35::-->
     1974Constant propagation is done for all operations. Multiplications and
    19341975divisions are optimized to shifts when appropriate. Comparison
    19351976operators are optimized by maintaining a special cache for the
    1936 processor flags. &amp;&amp;, || and ! are optimized by maintaining a special
    1937 &rsquo;jump target&rsquo; value. No other jump optimization is currently performed
     1977processor flags. &#38;&#38;, || and ! are optimized by maintaining a special
     1978'jump target' value. No other jump optimization is currently performed
    19381979because it would require to store the code in a more abstract fashion.
    1939 </p>
    1940 <hr size="6">
    1941 <a name="Concept-Index"></a>
    1942 <table cellpadding="1" cellspacing="1" border="0">
    1943 <tr><td valign="middle" align="left">[<a href="#Optimizations-done" title="Previous section in reading order"> &lt; </a>]</td>
    1944 <td valign="middle" align="left">[ &gt; ]</td>
    1945 <td valign="middle" align="left"> &nbsp; </td>
    1946 <td valign="middle" align="left">[<a href="#devel" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
    1947 <td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
    1948 <td valign="middle" align="left">[ &gt;&gt; ]</td>
    1949 <td valign="middle" align="left"> &nbsp; </td>
    1950 <td valign="middle" align="left"> &nbsp; </td>
    1951 <td valign="middle" align="left"> &nbsp; </td>
    1952 <td valign="middle" align="left"> &nbsp; </td>
    1953 <td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    1954 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    1955 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    1956 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    1957 </tr></table>
    1958 <h1 class="unnumbered">Concept Index</h1>
    1959 <table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Concept-Index_cp_symbol-1" class="summary-letter"><b>_</b></a>
    1960  &nbsp;
    1961 <br>
    1962 <a href="#Concept-Index_cp_letter-A" class="summary-letter"><b>A</b></a>
    1963  &nbsp;
    1964 <a href="#Concept-Index_cp_letter-B" class="summary-letter"><b>B</b></a>
    1965  &nbsp;
    1966 <a href="#Concept-Index_cp_letter-C" class="summary-letter"><b>C</b></a>
    1967  &nbsp;
    1968 <a href="#Concept-Index_cp_letter-D" class="summary-letter"><b>D</b></a>
    1969  &nbsp;
    1970 <a href="#Concept-Index_cp_letter-E" class="summary-letter"><b>E</b></a>
    1971  &nbsp;
    1972 <a href="#Concept-Index_cp_letter-F" class="summary-letter"><b>F</b></a>
    1973  &nbsp;
    1974 <a href="#Concept-Index_cp_letter-G" class="summary-letter"><b>G</b></a>
    1975  &nbsp;
    1976 <a href="#Concept-Index_cp_letter-I" class="summary-letter"><b>I</b></a>
    1977  &nbsp;
    1978 <a href="#Concept-Index_cp_letter-J" class="summary-letter"><b>J</b></a>
    1979  &nbsp;
    1980 <a href="#Concept-Index_cp_letter-L" class="summary-letter"><b>L</b></a>
    1981  &nbsp;
    1982 <a href="#Concept-Index_cp_letter-M" class="summary-letter"><b>M</b></a>
    1983  &nbsp;
    1984 <a href="#Concept-Index_cp_letter-O" class="summary-letter"><b>O</b></a>
    1985  &nbsp;
    1986 <a href="#Concept-Index_cp_letter-P" class="summary-letter"><b>P</b></a>
    1987  &nbsp;
    1988 <a href="#Concept-Index_cp_letter-Q" class="summary-letter"><b>Q</b></a>
    1989  &nbsp;
    1990 <a href="#Concept-Index_cp_letter-R" class="summary-letter"><b>R</b></a>
    1991  &nbsp;
    1992 <a href="#Concept-Index_cp_letter-S" class="summary-letter"><b>S</b></a>
    1993  &nbsp;
    1994 <a href="#Concept-Index_cp_letter-T" class="summary-letter"><b>T</b></a>
    1995  &nbsp;
    1996 <a href="#Concept-Index_cp_letter-U" class="summary-letter"><b>U</b></a>
    1997  &nbsp;
    1998 <a href="#Concept-Index_cp_letter-V" class="summary-letter"><b>V</b></a>
    1999  &nbsp;
    2000 <a href="#Concept-Index_cp_letter-W" class="summary-letter"><b>W</b></a>
    2001  &nbsp;
    2002 </td></tr></table>
    2003 <table border="0" class="index-cp">
    2004 <tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
    2005 <tr><td colspan="3"> <hr></td></tr>
    2006 <tr><th><a name="Concept-Index_cp_symbol-1">_</a></th><td></td><td></td></tr>
    2007 <tr><td></td><td valign="top"><a href="#index-_005f_005fasm_005f_005f">__asm__</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2008 <tr><td colspan="3"> <hr></td></tr>
    2009 <tr><th><a name="Concept-Index_cp_letter-A">A</a></th><td></td><td></td></tr>
    2010 <tr><td></td><td valign="top"><a href="#index-align-directive">align directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2011 <tr><td></td><td valign="top"><a href="#index-aligned-attribute">aligned attribute</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2012 <tr><td></td><td valign="top"><a href="#index-ascii-directive">ascii directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2013 <tr><td></td><td valign="top"><a href="#index-asciz-directive">asciz directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2014 <tr><td></td><td valign="top"><a href="#index-assembler">assembler</a></td><td valign="top"><a href="#X86-Assembler">4.5 X86 Assembler</a></td></tr>
    2015 <tr><td></td><td valign="top"><a href="#index-assembler-directives">assembler directives</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2016 <tr><td></td><td valign="top"><a href="#index-assembly_002c-inline">assembly, inline</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2017 <tr><td colspan="3"> <hr></td></tr>
    2018 <tr><th><a name="Concept-Index_cp_letter-B">B</a></th><td></td><td></td></tr>
    2019 <tr><td></td><td valign="top"><a href="#index-bound-checks">bound checks</a></td><td valign="top"><a href="#Bounds">6. TinyCC Memory and Bound checks</a></td></tr>
    2020 <tr><td></td><td valign="top"><a href="#index-bss-directive">bss directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2021 <tr><td></td><td valign="top"><a href="#index-byte-directive">byte directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2022 <tr><td colspan="3"> <hr></td></tr>
    2023 <tr><th><a name="Concept-Index_cp_letter-C">C</a></th><td></td><td></td></tr>
    2024 <tr><td></td><td valign="top"><a href="#index-caching-processor-flags">caching processor flags</a></td><td valign="top"><a href="#Optimizations-done">8.8 Optimizations done</a></td></tr>
    2025 <tr><td></td><td valign="top"><a href="#index-cdecl-attribute">cdecl attribute</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2026 <tr><td></td><td valign="top"><a href="#index-code-generation">code generation</a></td><td valign="top"><a href="#Code-generation">8.7 Code generation</a></td></tr>
    2027 <tr><td></td><td valign="top"><a href="#index-comparison-operators">comparison operators</a></td><td valign="top"><a href="#Optimizations-done">8.8 Optimizations done</a></td></tr>
    2028 <tr><td></td><td valign="top"><a href="#index-constant-propagation">constant propagation</a></td><td valign="top"><a href="#Optimizations-done">8.8 Optimizations done</a></td></tr>
    2029 <tr><td></td><td valign="top"><a href="#index-CPU-dependent">CPU dependent</a></td><td valign="top"><a href="#CPU-dependent-code-generation">8.7.4 CPU dependent code generation</a></td></tr>
    2030 <tr><td colspan="3"> <hr></td></tr>
    2031 <tr><th><a name="Concept-Index_cp_letter-D">D</a></th><td></td><td></td></tr>
    2032 <tr><td></td><td valign="top"><a href="#index-data-directive">data directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2033 <tr><td></td><td valign="top"><a href="#index-directives_002c-assembler">directives, assembler</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2034 <tr><td></td><td valign="top"><a href="#index-dllexport-attribute">dllexport attribute</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2035 <tr><td colspan="3"> <hr></td></tr>
    2036 <tr><th><a name="Concept-Index_cp_letter-E">E</a></th><td></td><td></td></tr>
    2037 <tr><td></td><td valign="top"><a href="#index-ELF">ELF</a></td><td valign="top"><a href="#ELF-file-generation">5.1 ELF file generation</a></td></tr>
    2038 <tr><td colspan="3"> <hr></td></tr>
    2039 <tr><th><a name="Concept-Index_cp_letter-F">F</a></th><td></td><td></td></tr>
    2040 <tr><td></td><td valign="top"><a href="#index-FILE_002c-linker-command">FILE, linker command</a></td><td valign="top"><a href="#GNU-Linker-Scripts">5.4 GNU Linker Scripts</a></td></tr>
    2041 <tr><td></td><td valign="top"><a href="#index-fill-directive">fill directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2042 <tr><td></td><td valign="top"><a href="#index-flags_002c-caching">flags, caching</a></td><td valign="top"><a href="#Optimizations-done">8.8 Optimizations done</a></td></tr>
    2043 <tr><td colspan="3"> <hr></td></tr>
    2044 <tr><th><a name="Concept-Index_cp_letter-G">G</a></th><td></td><td></td></tr>
    2045 <tr><td></td><td valign="top"><a href="#index-gas">gas</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2046 <tr><td></td><td valign="top"><a href="#index-global-directive">global directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2047 <tr><td></td><td valign="top"><a href="#index-globl-directive">globl directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2048 <tr><td></td><td valign="top"><a href="#index-GROUP_002c-linker-command">GROUP, linker command</a></td><td valign="top"><a href="#GNU-Linker-Scripts">5.4 GNU Linker Scripts</a></td></tr>
    2049 <tr><td colspan="3"> <hr></td></tr>
    2050 <tr><th><a name="Concept-Index_cp_letter-I">I</a></th><td></td><td></td></tr>
    2051 <tr><td></td><td valign="top"><a href="#index-inline-assembly">inline assembly</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2052 <tr><td></td><td valign="top"><a href="#index-int-directive">int directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2053 <tr><td colspan="3"> <hr></td></tr>
    2054 <tr><th><a name="Concept-Index_cp_letter-J">J</a></th><td></td><td></td></tr>
    2055 <tr><td></td><td valign="top"><a href="#index-jump-optimization">jump optimization</a></td><td valign="top"><a href="#Optimizations-done">8.8 Optimizations done</a></td></tr>
    2056 <tr><td colspan="3"> <hr></td></tr>
    2057 <tr><th><a name="Concept-Index_cp_letter-L">L</a></th><td></td><td></td></tr>
    2058 <tr><td></td><td valign="top"><a href="#index-linker">linker</a></td><td valign="top"><a href="#linker">5. TinyCC Linker</a></td></tr>
    2059 <tr><td></td><td valign="top"><a href="#index-linker-scripts">linker scripts</a></td><td valign="top"><a href="#GNU-Linker-Scripts">5.4 GNU Linker Scripts</a></td></tr>
    2060 <tr><td></td><td valign="top"><a href="#index-long-directive">long directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2061 <tr><td colspan="3"> <hr></td></tr>
    2062 <tr><th><a name="Concept-Index_cp_letter-M">M</a></th><td></td><td></td></tr>
    2063 <tr><td></td><td valign="top"><a href="#index-memory-checks">memory checks</a></td><td valign="top"><a href="#Bounds">6. TinyCC Memory and Bound checks</a></td></tr>
    2064 <tr><td colspan="3"> <hr></td></tr>
    2065 <tr><th><a name="Concept-Index_cp_letter-O">O</a></th><td></td><td></td></tr>
    2066 <tr><td></td><td valign="top"><a href="#index-optimizations">optimizations</a></td><td valign="top"><a href="#Optimizations-done">8.8 Optimizations done</a></td></tr>
    2067 <tr><td></td><td valign="top"><a href="#index-org-directive">org directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2068 <tr><td></td><td valign="top"><a href="#index-OUTPUT_005fFORMAT_002c-linker-command">OUTPUT_FORMAT, linker command</a></td><td valign="top"><a href="#GNU-Linker-Scripts">5.4 GNU Linker Scripts</a></td></tr>
    2069 <tr><td colspan="3"> <hr></td></tr>
    2070 <tr><th><a name="Concept-Index_cp_letter-P">P</a></th><td></td><td></td></tr>
    2071 <tr><td></td><td valign="top"><a href="#index-packed-attribute">packed attribute</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2072 <tr><td></td><td valign="top"><a href="#index-PE_002di386">PE-i386</a></td><td valign="top"><a href="#PE_002di386-file-generation">5.3 PE-i386 file generation</a></td></tr>
    2073 <tr><td></td><td valign="top"><a href="#index-previous-directive">previous directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2074 <tr><td colspan="3"> <hr></td></tr>
    2075 <tr><th><a name="Concept-Index_cp_letter-Q">Q</a></th><td></td><td></td></tr>
    2076 <tr><td></td><td valign="top"><a href="#index-quad-directive">quad directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2077 <tr><td colspan="3"> <hr></td></tr>
    2078 <tr><th><a name="Concept-Index_cp_letter-R">R</a></th><td></td><td></td></tr>
    2079 <tr><td></td><td valign="top"><a href="#index-regparm-attribute">regparm attribute</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2080 <tr><td colspan="3"> <hr></td></tr>
    2081 <tr><th><a name="Concept-Index_cp_letter-S">S</a></th><td></td><td></td></tr>
    2082 <tr><td></td><td valign="top"><a href="#index-scripts_002c-linker">scripts, linker</a></td><td valign="top"><a href="#GNU-Linker-Scripts">5.4 GNU Linker Scripts</a></td></tr>
    2083 <tr><td></td><td valign="top"><a href="#index-section-attribute">section attribute</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2084 <tr><td></td><td valign="top"><a href="#index-section-directive">section directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2085 <tr><td></td><td valign="top"><a href="#index-short-directive">short directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2086 <tr><td></td><td valign="top"><a href="#index-skip-directive">skip directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2087 <tr><td></td><td valign="top"><a href="#index-space-directive">space directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2088 <tr><td></td><td valign="top"><a href="#index-stdcall-attribute">stdcall attribute</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2089 <tr><td></td><td valign="top"><a href="#index-strength-reduction">strength reduction</a></td><td valign="top"><a href="#Optimizations-done">8.8 Optimizations done</a></td></tr>
    2090 <tr><td></td><td valign="top"><a href="#index-string-directive">string directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2091 <tr><td colspan="3"> <hr></td></tr>
    2092 <tr><th><a name="Concept-Index_cp_letter-T">T</a></th><td></td><td></td></tr>
    2093 <tr><td></td><td valign="top"><a href="#index-TARGET_002c-linker-command">TARGET, linker command</a></td><td valign="top"><a href="#GNU-Linker-Scripts">5.4 GNU Linker Scripts</a></td></tr>
    2094 <tr><td></td><td valign="top"><a href="#index-text-directive">text directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2095 <tr><td colspan="3"> <hr></td></tr>
    2096 <tr><th><a name="Concept-Index_cp_letter-U">U</a></th><td></td><td></td></tr>
    2097 <tr><td></td><td valign="top"><a href="#index-unused-attribute">unused attribute</a></td><td valign="top"><a href="#GNU-C-extensions">3.3 GNU C extensions</a></td></tr>
    2098 <tr><td colspan="3"> <hr></td></tr>
    2099 <tr><th><a name="Concept-Index_cp_letter-V">V</a></th><td></td><td></td></tr>
    2100 <tr><td></td><td valign="top"><a href="#index-value-stack">value stack</a></td><td valign="top"><a href="#Manipulating-the-value-stack">8.7.3 Manipulating the value stack</a></td></tr>
    2101 <tr><td></td><td valign="top"><a href="#index-value-stack_002c-introduction">value stack, introduction</a></td><td valign="top"><a href="#The-value-stack">8.7.2 The value stack</a></td></tr>
    2102 <tr><td colspan="3"> <hr></td></tr>
    2103 <tr><th><a name="Concept-Index_cp_letter-W">W</a></th><td></td><td></td></tr>
    2104 <tr><td></td><td valign="top"><a href="#index-word-directive">word directive</a></td><td valign="top"><a href="#Directives">4.4 Directives</a></td></tr>
    2105 <tr><td colspan="3"> <hr></td></tr>
    2106 </table>
    2107 <table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Concept-Index_cp_symbol-1" class="summary-letter"><b>_</b></a>
    2108  &nbsp;
    2109 <br>
    2110 <a href="#Concept-Index_cp_letter-A" class="summary-letter"><b>A</b></a>
    2111  &nbsp;
    2112 <a href="#Concept-Index_cp_letter-B" class="summary-letter"><b>B</b></a>
    2113  &nbsp;
    2114 <a href="#Concept-Index_cp_letter-C" class="summary-letter"><b>C</b></a>
    2115  &nbsp;
    2116 <a href="#Concept-Index_cp_letter-D" class="summary-letter"><b>D</b></a>
    2117  &nbsp;
    2118 <a href="#Concept-Index_cp_letter-E" class="summary-letter"><b>E</b></a>
    2119  &nbsp;
    2120 <a href="#Concept-Index_cp_letter-F" class="summary-letter"><b>F</b></a>
    2121  &nbsp;
    2122 <a href="#Concept-Index_cp_letter-G" class="summary-letter"><b>G</b></a>
    2123  &nbsp;
    2124 <a href="#Concept-Index_cp_letter-I" class="summary-letter"><b>I</b></a>
    2125  &nbsp;
    2126 <a href="#Concept-Index_cp_letter-J" class="summary-letter"><b>J</b></a>
    2127  &nbsp;
    2128 <a href="#Concept-Index_cp_letter-L" class="summary-letter"><b>L</b></a>
    2129  &nbsp;
    2130 <a href="#Concept-Index_cp_letter-M" class="summary-letter"><b>M</b></a>
    2131  &nbsp;
    2132 <a href="#Concept-Index_cp_letter-O" class="summary-letter"><b>O</b></a>
    2133  &nbsp;
    2134 <a href="#Concept-Index_cp_letter-P" class="summary-letter"><b>P</b></a>
    2135  &nbsp;
    2136 <a href="#Concept-Index_cp_letter-Q" class="summary-letter"><b>Q</b></a>
    2137  &nbsp;
    2138 <a href="#Concept-Index_cp_letter-R" class="summary-letter"><b>R</b></a>
    2139  &nbsp;
    2140 <a href="#Concept-Index_cp_letter-S" class="summary-letter"><b>S</b></a>
    2141  &nbsp;
    2142 <a href="#Concept-Index_cp_letter-T" class="summary-letter"><b>T</b></a>
    2143  &nbsp;
    2144 <a href="#Concept-Index_cp_letter-U" class="summary-letter"><b>U</b></a>
    2145  &nbsp;
    2146 <a href="#Concept-Index_cp_letter-V" class="summary-letter"><b>V</b></a>
    2147  &nbsp;
    2148 <a href="#Concept-Index_cp_letter-W" class="summary-letter"><b>W</b></a>
    2149  &nbsp;
    2150 </td></tr></table>
    2151 
    2152 <hr size="6">
    2153 <a name="SEC_Contents"></a>
    2154 <table cellpadding="1" cellspacing="1" border="0">
    2155 <tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    2156 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    2157 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    2158 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    2159 </tr></table>
    2160 <h1>Table of Contents</h1>
    2161 <div class="contents">
    2162 
    2163 <ul class="toc">
    2164   <li><a name="toc-Introduction-1" href="#Introduction">1. Introduction</a></li>
    2165   <li><a name="toc-Command-line-invocation" href="#Invoke">2. Command line invocation</a>
    2166   <ul class="toc">
    2167     <li><a name="toc-Quick-start" href="#Quick-start">2.1 Quick start</a></li>
    2168     <li><a name="toc-Option-summary" href="#Option-summary">2.2 Option summary</a></li>
    2169   </ul></li>
    2170   <li><a name="toc-C-language-support" href="#Clang">3. C language support</a>
    2171   <ul class="toc">
    2172     <li><a name="toc-ANSI-C" href="#ANSI-C">3.1 ANSI C</a></li>
    2173     <li><a name="toc-ISOC99-extensions" href="#ISOC99-extensions">3.2 ISOC99 extensions</a></li>
    2174     <li><a name="toc-GNU-C-extensions" href="#GNU-C-extensions">3.3 GNU C extensions</a></li>
    2175     <li><a name="toc-TinyCC-extensions" href="#TinyCC-extensions">3.4 TinyCC extensions</a></li>
    2176   </ul></li>
    2177   <li><a name="toc-TinyCC-Assembler" href="#asm">4. TinyCC Assembler</a>
    2178   <ul class="toc">
    2179     <li><a name="toc-Syntax" href="#Syntax">4.1 Syntax</a></li>
    2180     <li><a name="toc-Expressions" href="#Expressions">4.2 Expressions</a></li>
    2181     <li><a name="toc-Labels" href="#Labels">4.3 Labels</a></li>
    2182     <li><a name="toc-Directives" href="#Directives">4.4 Directives</a></li>
    2183     <li><a name="toc-X86-Assembler" href="#X86-Assembler">4.5 X86 Assembler</a></li>
    2184   </ul></li>
    2185   <li><a name="toc-TinyCC-Linker" href="#linker">5. TinyCC Linker</a>
    2186   <ul class="toc">
    2187     <li><a name="toc-ELF-file-generation" href="#ELF-file-generation">5.1 ELF file generation</a></li>
    2188     <li><a name="toc-ELF-file-loader" href="#ELF-file-loader">5.2 ELF file loader</a></li>
    2189     <li><a name="toc-PE_002di386-file-generation" href="#PE_002di386-file-generation">5.3 PE-i386 file generation</a></li>
    2190     <li><a name="toc-GNU-Linker-Scripts" href="#GNU-Linker-Scripts">5.4 GNU Linker Scripts</a></li>
    2191   </ul></li>
    2192   <li><a name="toc-TinyCC-Memory-and-Bound-checks" href="#Bounds">6. TinyCC Memory and Bound checks</a></li>
    2193   <li><a name="toc-The-libtcc-library" href="#Libtcc">7. The <code>libtcc</code> library</a></li>
    2194   <li><a name="toc-Developer_0027s-guide" href="#devel">8. Developer&rsquo;s guide</a>
    2195   <ul class="toc">
    2196     <li><a name="toc-File-reading" href="#File-reading">8.1 File reading</a></li>
    2197     <li><a name="toc-Lexer" href="#Lexer">8.2 Lexer</a></li>
    2198     <li><a name="toc-Parser" href="#Parser">8.3 Parser</a></li>
    2199     <li><a name="toc-Types" href="#Types">8.4 Types</a></li>
    2200     <li><a name="toc-Symbols" href="#Symbols">8.5 Symbols</a></li>
    2201     <li><a name="toc-Sections" href="#Sections">8.6 Sections</a></li>
    2202     <li><a name="toc-Code-generation" href="#Code-generation">8.7 Code generation</a>
    2203     <ul class="toc">
    2204       <li><a name="toc-Introduction-2" href="#Introduction-2">8.7.1 Introduction</a></li>
    2205       <li><a name="toc-The-value-stack" href="#The-value-stack">8.7.2 The value stack</a></li>
    2206       <li><a name="toc-Manipulating-the-value-stack" href="#Manipulating-the-value-stack">8.7.3 Manipulating the value stack</a></li>
    2207       <li><a name="toc-CPU-dependent-code-generation" href="#CPU-dependent-code-generation">8.7.4 CPU dependent code generation</a></li>
    2208     </ul></li>
    2209     <li><a name="toc-Optimizations-done" href="#Optimizations-done">8.8 Optimizations done</a></li>
    2210   </ul></li>
    2211   <li><a name="toc-Concept-Index" href="#Concept-Index">Concept Index</a></li>
    2212 </ul>
    2213 </div>
    2214 <hr size="1">
    2215 <a name="SEC_About"></a>
    2216 <table cellpadding="1" cellspacing="1" border="0">
    2217 <tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
    2218 <td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
    2219 <td valign="middle" align="left">[<a href="#Concept-Index" title="Index">Index</a>]</td>
    2220 <td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
    2221 </tr></table>
    2222 <h1>About This Document</h1>
    2223 <p>
    2224   This document was generated by <em>Thomas Preud'homme</em> on <em>February 15, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
    2225 </p>
    2226 <p>
    2227   The buttons in the navigation panels have the following meaning:
    2228 </p>
    2229 <table border="1">
    2230   <tr>
    2231     <th> Button </th>
    2232     <th> Name </th>
    2233     <th> Go to </th>
    2234     <th> From 1.2.3 go to</th>
    2235   </tr>
    2236   <tr>
    2237     <td align="center"> [ &lt; ] </td>
    2238     <td align="center">Back</td>
    2239     <td>Previous section in reading order</td>
    2240     <td>1.2.2</td>
    2241   </tr>
    2242   <tr>
    2243     <td align="center"> [ &gt; ] </td>
    2244     <td align="center">Forward</td>
    2245     <td>Next section in reading order</td>
    2246     <td>1.2.4</td>
    2247   </tr>
    2248   <tr>
    2249     <td align="center"> [ &lt;&lt; ] </td>
    2250     <td align="center">FastBack</td>
    2251     <td>Beginning of this chapter or previous chapter</td>
    2252     <td>1</td>
    2253   </tr>
    2254   <tr>
    2255     <td align="center"> [ Up ] </td>
    2256     <td align="center">Up</td>
    2257     <td>Up section</td>
    2258     <td>1.2</td>
    2259   </tr>
    2260   <tr>
    2261     <td align="center"> [ &gt;&gt; ] </td>
    2262     <td align="center">FastForward</td>
    2263     <td>Next chapter</td>
    2264     <td>2</td>
    2265   </tr>
    2266   <tr>
    2267     <td align="center"> [Top] </td>
    2268     <td align="center">Top</td>
    2269     <td>Cover (top) of document</td>
    2270     <td> &nbsp; </td>
    2271   </tr>
    2272   <tr>
    2273     <td align="center"> [Contents] </td>
    2274     <td align="center">Contents</td>
    2275     <td>Table of contents</td>
    2276     <td> &nbsp; </td>
    2277   </tr>
    2278   <tr>
    2279     <td align="center"> [Index] </td>
    2280     <td align="center">Index</td>
    2281     <td>Index</td>
    2282     <td> &nbsp; </td>
    2283   </tr>
    2284   <tr>
    2285     <td align="center"> [ ? ] </td>
    2286     <td align="center">About</td>
    2287     <td>About (help)</td>
    2288     <td> &nbsp; </td>
    2289   </tr>
    2290 </table>
    2291 
    2292 <p>
    2293   where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:
    2294 </p>
    2295 
    2296 <ul>
    2297   <li> 1. Section One
    2298     <ul>
    2299       <li>1.1 Subsection One-One
    2300         <ul>
    2301           <li>...</li>
    2302         </ul>
    2303       </li>
    2304       <li>1.2 Subsection One-Two
    2305         <ul>
    2306           <li>1.2.1 Subsubsection One-Two-One</li>
    2307           <li>1.2.2 Subsubsection One-Two-Two</li>
    2308           <li>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
    2309             <strong>&lt;== Current Position </strong></li>
    2310           <li>1.2.4 Subsubsection One-Two-Four</li>
    2311         </ul>
    2312       </li>
    2313       <li>1.3 Subsection One-Three
    2314         <ul>
    2315           <li>...</li>
    2316         </ul>
    2317       </li>
    2318       <li>1.4 Subsection One-Four</li>
    2319     </ul>
    2320   </li>
    2321 </ul>
    2322 
    2323 <hr size="1">
    2324 <p>
    2325  <font size="-1">
    2326   This document was generated by <em>Thomas Preud'homme</em> on <em>February 15, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
    2327  </font>
    2328  <br>
    2329 
    2330 </p>
    2331 </body>
    2332 </html>
     1980<P>
     1981
     1982<HR SIZE="6">
     1983<A NAME="SEC36"></A>
     1984<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     1985<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC35"> &lt; </A>]</TD>
     1986<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt; ]</TD>
     1987<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[ &lt;&lt; ]</TD>
     1988<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top"> Up </A>]</TD>
     1989<TD VALIGN="MIDDLE" ALIGN="LEFT">[ &gt;&gt; ]</TD>
     1990<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     1991<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     1992<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     1993<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     1994</TR></TABLE>
     1995<H1> Concept Index </H1>
     1996<!--docid::SEC36::-->
     1997<table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="tcc-doc.html#cp__" style="text-decoration:none"><b>_</b></A>
     1998 &nbsp;
     1999<BR>
     2000<A HREF="tcc-doc.html#cp_A" style="text-decoration:none"><b>A</b></A>
     2001 &nbsp;
     2002<A HREF="tcc-doc.html#cp_B" style="text-decoration:none"><b>B</b></A>
     2003 &nbsp;
     2004<A HREF="tcc-doc.html#cp_C" style="text-decoration:none"><b>C</b></A>
     2005 &nbsp;
     2006<A HREF="tcc-doc.html#cp_D" style="text-decoration:none"><b>D</b></A>
     2007 &nbsp;
     2008<A HREF="tcc-doc.html#cp_E" style="text-decoration:none"><b>E</b></A>
     2009 &nbsp;
     2010<A HREF="tcc-doc.html#cp_F" style="text-decoration:none"><b>F</b></A>
     2011 &nbsp;
     2012<A HREF="tcc-doc.html#cp_G" style="text-decoration:none"><b>G</b></A>
     2013 &nbsp;
     2014<A HREF="tcc-doc.html#cp_I" style="text-decoration:none"><b>I</b></A>
     2015 &nbsp;
     2016<A HREF="tcc-doc.html#cp_J" style="text-decoration:none"><b>J</b></A>
     2017 &nbsp;
     2018<A HREF="tcc-doc.html#cp_L" style="text-decoration:none"><b>L</b></A>
     2019 &nbsp;
     2020<A HREF="tcc-doc.html#cp_M" style="text-decoration:none"><b>M</b></A>
     2021 &nbsp;
     2022<A HREF="tcc-doc.html#cp_O" style="text-decoration:none"><b>O</b></A>
     2023 &nbsp;
     2024<A HREF="tcc-doc.html#cp_P" style="text-decoration:none"><b>P</b></A>
     2025 &nbsp;
     2026<A HREF="tcc-doc.html#cp_Q" style="text-decoration:none"><b>Q</b></A>
     2027 &nbsp;
     2028<A HREF="tcc-doc.html#cp_R" style="text-decoration:none"><b>R</b></A>
     2029 &nbsp;
     2030<A HREF="tcc-doc.html#cp_S" style="text-decoration:none"><b>S</b></A>
     2031 &nbsp;
     2032<A HREF="tcc-doc.html#cp_T" style="text-decoration:none"><b>T</b></A>
     2033 &nbsp;
     2034<A HREF="tcc-doc.html#cp_U" style="text-decoration:none"><b>U</b></A>
     2035 &nbsp;
     2036<A HREF="tcc-doc.html#cp_V" style="text-decoration:none"><b>V</b></A>
     2037 &nbsp;
     2038<A HREF="tcc-doc.html#cp_W" style="text-decoration:none"><b>W</b></A>
     2039 &nbsp;
     2040</td></tr></table><br><P></P>
     2041<TABLE border=0>
     2042<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR>
     2043<TR><TD COLSPAN=3> <HR></TD></TR>
     2044<TR><TH><A NAME="cp__"></A>_</TH><TD></TD><TD></TD></TR>
     2045<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX11">__asm__</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2046<TR><TD COLSPAN=3> <HR></TD></TR>
     2047<TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR>
     2048<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">align directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2049<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX1">aligned attribute</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2050<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">ascii directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2051<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">asciz directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2052<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC15">assembler</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC15">4.5 X86 Assembler</A></TD></TR>
     2053<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">assembler directives</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2054<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX10">assembly, inline</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2055<TR><TD COLSPAN=3> <HR></TD></TR>
     2056<TR><TH><A NAME="cp_B"></A>B</TH><TD></TD><TD></TD></TR>
     2057<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC21">bound checks</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC21">6. TinyCC Memory and Bound checks</A></TD></TR>
     2058<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">bss directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2059<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">byte directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2060<TR><TD COLSPAN=3> <HR></TD></TR>
     2061<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR>
     2062<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">caching processor flags</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">8.8 Optimizations done</A></TD></TR>
     2063<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX5">cdecl attribute</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2064<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC30">code generation</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC30">8.7 Code generation</A></TD></TR>
     2065<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">comparison operators</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">8.8 Optimizations done</A></TD></TR>
     2066<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">constant propagation</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">8.8 Optimizations done</A></TD></TR>
     2067<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC34">CPU dependent</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC34">8.7.4 CPU dependent code generation</A></TD></TR>
     2068<TR><TD COLSPAN=3> <HR></TD></TR>
     2069<TR><TH><A NAME="cp_D"></A>D</TH><TD></TD><TD></TD></TR>
     2070<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">data directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2071<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">directives, assembler</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2072<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX8">dllexport attribute</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2073<TR><TD COLSPAN=3> <HR></TD></TR>
     2074<TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR>
     2075<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC17">ELF</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC17">5.1 ELF file generation</A></TD></TR>
     2076<TR><TD COLSPAN=3> <HR></TD></TR>
     2077<TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR>
     2078<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">FILE, linker command</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">5.4 GNU Linker Scripts</A></TD></TR>
     2079<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">fill directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2080<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">flags, caching</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">8.8 Optimizations done</A></TD></TR>
     2081<TR><TD COLSPAN=3> <HR></TD></TR>
     2082<TR><TH><A NAME="cp_G"></A>G</TH><TD></TD><TD></TD></TR>
     2083<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX12">gas</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2084<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">global directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2085<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">globl directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2086<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">GROUP, linker command</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">5.4 GNU Linker Scripts</A></TD></TR>
     2087<TR><TD COLSPAN=3> <HR></TD></TR>
     2088<TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR>
     2089<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX9">inline assembly</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2090<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">int directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2091<TR><TD COLSPAN=3> <HR></TD></TR>
     2092<TR><TH><A NAME="cp_J"></A>J</TH><TD></TD><TD></TD></TR>
     2093<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">jump optimization</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">8.8 Optimizations done</A></TD></TR>
     2094<TR><TD COLSPAN=3> <HR></TD></TR>
     2095<TR><TH><A NAME="cp_L"></A>L</TH><TD></TD><TD></TD></TR>
     2096<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC16">linker</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC16">5. TinyCC Linker</A></TD></TR>
     2097<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">linker scripts</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">5.4 GNU Linker Scripts</A></TD></TR>
     2098<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">long directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2099<TR><TD COLSPAN=3> <HR></TD></TR>
     2100<TR><TH><A NAME="cp_M"></A>M</TH><TD></TD><TD></TD></TR>
     2101<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC21">memory checks</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC21">6. TinyCC Memory and Bound checks</A></TD></TR>
     2102<TR><TD COLSPAN=3> <HR></TD></TR>
     2103<TR><TH><A NAME="cp_O"></A>O</TH><TD></TD><TD></TD></TR>
     2104<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">optimizations</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">8.8 Optimizations done</A></TD></TR>
     2105<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">org directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2106<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">OUTPUT_FORMAT, linker command</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">5.4 GNU Linker Scripts</A></TD></TR>
     2107<TR><TD COLSPAN=3> <HR></TD></TR>
     2108<TR><TH><A NAME="cp_P"></A>P</TH><TD></TD><TD></TD></TR>
     2109<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX2">packed attribute</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2110<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC19">PE-i386</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC19">5.3 PE-i386 file generation</A></TD></TR>
     2111<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">previous directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2112<TR><TD COLSPAN=3> <HR></TD></TR>
     2113<TR><TH><A NAME="cp_Q"></A>Q</TH><TD></TD><TD></TD></TR>
     2114<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">quad directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2115<TR><TD COLSPAN=3> <HR></TD></TR>
     2116<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR>
     2117<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX7">regparm attribute</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2118<TR><TD COLSPAN=3> <HR></TD></TR>
     2119<TR><TH><A NAME="cp_S"></A>S</TH><TD></TD><TD></TD></TR>
     2120<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">scripts, linker</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">5.4 GNU Linker Scripts</A></TD></TR>
     2121<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX3">section attribute</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2122<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">section directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2123<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">short directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2124<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">skip directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2125<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">space directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2126<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX6">stdcall attribute</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2127<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">strength reduction</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC35">8.8 Optimizations done</A></TD></TR>
     2128<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">string directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2129<TR><TD COLSPAN=3> <HR></TD></TR>
     2130<TR><TH><A NAME="cp_T"></A>T</TH><TD></TD><TD></TD></TR>
     2131<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">TARGET, linker command</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC20">5.4 GNU Linker Scripts</A></TD></TR>
     2132<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">text directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2133<TR><TD COLSPAN=3> <HR></TD></TR>
     2134<TR><TH><A NAME="cp_U"></A>U</TH><TD></TD><TD></TD></TR>
     2135<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#IDX4">unused attribute</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A></TD></TR>
     2136<TR><TD COLSPAN=3> <HR></TD></TR>
     2137<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR>
     2138<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC33">value stack</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC33">8.7.3 Manipulating the value stack</A></TD></TR>
     2139<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC32">value stack, introduction</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC32">8.7.2 The value stack</A></TD></TR>
     2140<TR><TD COLSPAN=3> <HR></TD></TR>
     2141<TR><TH><A NAME="cp_W"></A>W</TH><TD></TD><TD></TD></TR>
     2142<TR><TD></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">word directive</A></TD><TD valign=top><A HREF="tcc-doc.html#SEC14">4.4 Directives</A></TD></TR>
     2143<TR><TD COLSPAN=3> <HR></TD></TR>
     2144</TABLE><P></P><table><tr><th valign=top>Jump to: &nbsp; </th><td><A HREF="tcc-doc.html#cp__" style="text-decoration:none"><b>_</b></A>
     2145 &nbsp;
     2146<BR>
     2147<A HREF="tcc-doc.html#cp_A" style="text-decoration:none"><b>A</b></A>
     2148 &nbsp;
     2149<A HREF="tcc-doc.html#cp_B" style="text-decoration:none"><b>B</b></A>
     2150 &nbsp;
     2151<A HREF="tcc-doc.html#cp_C" style="text-decoration:none"><b>C</b></A>
     2152 &nbsp;
     2153<A HREF="tcc-doc.html#cp_D" style="text-decoration:none"><b>D</b></A>
     2154 &nbsp;
     2155<A HREF="tcc-doc.html#cp_E" style="text-decoration:none"><b>E</b></A>
     2156 &nbsp;
     2157<A HREF="tcc-doc.html#cp_F" style="text-decoration:none"><b>F</b></A>
     2158 &nbsp;
     2159<A HREF="tcc-doc.html#cp_G" style="text-decoration:none"><b>G</b></A>
     2160 &nbsp;
     2161<A HREF="tcc-doc.html#cp_I" style="text-decoration:none"><b>I</b></A>
     2162 &nbsp;
     2163<A HREF="tcc-doc.html#cp_J" style="text-decoration:none"><b>J</b></A>
     2164 &nbsp;
     2165<A HREF="tcc-doc.html#cp_L" style="text-decoration:none"><b>L</b></A>
     2166 &nbsp;
     2167<A HREF="tcc-doc.html#cp_M" style="text-decoration:none"><b>M</b></A>
     2168 &nbsp;
     2169<A HREF="tcc-doc.html#cp_O" style="text-decoration:none"><b>O</b></A>
     2170 &nbsp;
     2171<A HREF="tcc-doc.html#cp_P" style="text-decoration:none"><b>P</b></A>
     2172 &nbsp;
     2173<A HREF="tcc-doc.html#cp_Q" style="text-decoration:none"><b>Q</b></A>
     2174 &nbsp;
     2175<A HREF="tcc-doc.html#cp_R" style="text-decoration:none"><b>R</b></A>
     2176 &nbsp;
     2177<A HREF="tcc-doc.html#cp_S" style="text-decoration:none"><b>S</b></A>
     2178 &nbsp;
     2179<A HREF="tcc-doc.html#cp_T" style="text-decoration:none"><b>T</b></A>
     2180 &nbsp;
     2181<A HREF="tcc-doc.html#cp_U" style="text-decoration:none"><b>U</b></A>
     2182 &nbsp;
     2183<A HREF="tcc-doc.html#cp_V" style="text-decoration:none"><b>V</b></A>
     2184 &nbsp;
     2185<A HREF="tcc-doc.html#cp_W" style="text-decoration:none"><b>W</b></A>
     2186 &nbsp;
     2187</td></tr></table><br><P>
     2188
     2189<HR SIZE="6">
     2190<A NAME="SEC_Contents"></A>
     2191<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     2192<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     2193<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     2194<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     2195<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     2196</TR></TABLE>
     2197<H1>Table of Contents</H1>
     2198<UL>
     2199<A NAME="TOC1" HREF="tcc-doc.html#SEC1">1. Introduction</A>
     2200<BR>
     2201<A NAME="TOC2" HREF="tcc-doc.html#SEC2">2. Command line invocation</A>
     2202<BR>
     2203<UL>
     2204<A NAME="TOC3" HREF="tcc-doc.html#SEC3">2.1 Quick start</A>
     2205<BR>
     2206<A NAME="TOC4" HREF="tcc-doc.html#SEC4">2.2 Option summary</A>
     2207<BR>
     2208</UL>
     2209<A NAME="TOC5" HREF="tcc-doc.html#SEC5">3. C language support</A>
     2210<BR>
     2211<UL>
     2212<A NAME="TOC6" HREF="tcc-doc.html#SEC6">3.1 ANSI C</A>
     2213<BR>
     2214<A NAME="TOC7" HREF="tcc-doc.html#SEC7">3.2 ISOC99 extensions</A>
     2215<BR>
     2216<A NAME="TOC8" HREF="tcc-doc.html#SEC8">3.3 GNU C extensions</A>
     2217<BR>
     2218<A NAME="TOC9" HREF="tcc-doc.html#SEC9">3.4 TinyCC extensions</A>
     2219<BR>
     2220</UL>
     2221<A NAME="TOC10" HREF="tcc-doc.html#SEC10">4. TinyCC Assembler</A>
     2222<BR>
     2223<UL>
     2224<A NAME="TOC11" HREF="tcc-doc.html#SEC11">4.1 Syntax</A>
     2225<BR>
     2226<A NAME="TOC12" HREF="tcc-doc.html#SEC12">4.2 Expressions</A>
     2227<BR>
     2228<A NAME="TOC13" HREF="tcc-doc.html#SEC13">4.3 Labels</A>
     2229<BR>
     2230<A NAME="TOC14" HREF="tcc-doc.html#SEC14">4.4 Directives</A>
     2231<BR>
     2232<A NAME="TOC15" HREF="tcc-doc.html#SEC15">4.5 X86 Assembler</A>
     2233<BR>
     2234</UL>
     2235<A NAME="TOC16" HREF="tcc-doc.html#SEC16">5. TinyCC Linker</A>
     2236<BR>
     2237<UL>
     2238<A NAME="TOC17" HREF="tcc-doc.html#SEC17">5.1 ELF file generation</A>
     2239<BR>
     2240<A NAME="TOC18" HREF="tcc-doc.html#SEC18">5.2 ELF file loader</A>
     2241<BR>
     2242<A NAME="TOC19" HREF="tcc-doc.html#SEC19">5.3 PE-i386 file generation</A>
     2243<BR>
     2244<A NAME="TOC20" HREF="tcc-doc.html#SEC20">5.4 GNU Linker Scripts</A>
     2245<BR>
     2246</UL>
     2247<A NAME="TOC21" HREF="tcc-doc.html#SEC21">6. TinyCC Memory and Bound checks</A>
     2248<BR>
     2249<A NAME="TOC22" HREF="tcc-doc.html#SEC22">7. The <CODE>libtcc</CODE> library</A>
     2250<BR>
     2251<A NAME="TOC23" HREF="tcc-doc.html#SEC23">8. Developer's guide</A>
     2252<BR>
     2253<UL>
     2254<A NAME="TOC24" HREF="tcc-doc.html#SEC24">8.1 File reading</A>
     2255<BR>
     2256<A NAME="TOC25" HREF="tcc-doc.html#SEC25">8.2 Lexer</A>
     2257<BR>
     2258<A NAME="TOC26" HREF="tcc-doc.html#SEC26">8.3 Parser</A>
     2259<BR>
     2260<A NAME="TOC27" HREF="tcc-doc.html#SEC27">8.4 Types</A>
     2261<BR>
     2262<A NAME="TOC28" HREF="tcc-doc.html#SEC28">8.5 Symbols</A>
     2263<BR>
     2264<A NAME="TOC29" HREF="tcc-doc.html#SEC29">8.6 Sections</A>
     2265<BR>
     2266<A NAME="TOC30" HREF="tcc-doc.html#SEC30">8.7 Code generation</A>
     2267<BR>
     2268<UL>
     2269<A NAME="TOC31" HREF="tcc-doc.html#SEC31">8.7.1 Introduction</A>
     2270<BR>
     2271<A NAME="TOC32" HREF="tcc-doc.html#SEC32">8.7.2 The value stack</A>
     2272<BR>
     2273<A NAME="TOC33" HREF="tcc-doc.html#SEC33">8.7.3 Manipulating the value stack</A>
     2274<BR>
     2275<A NAME="TOC34" HREF="tcc-doc.html#SEC34">8.7.4 CPU dependent code generation</A>
     2276<BR>
     2277</UL>
     2278<A NAME="TOC35" HREF="tcc-doc.html#SEC35">8.8 Optimizations done</A>
     2279<BR>
     2280</UL>
     2281<A NAME="TOC36" HREF="tcc-doc.html#SEC36">Concept Index</A>
     2282<BR>
     2283</UL>
     2284<HR SIZE=1>
     2285<A NAME="SEC_OVERVIEW"></A>
     2286<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     2287<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     2288<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     2289<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     2290<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     2291</TR></TABLE>
     2292<H1>Short Table of Contents</H1>
     2293<BLOCKQUOTE>
     2294<A NAME="TOC1" HREF="tcc-doc.html#SEC1">1. Introduction</A>
     2295<BR>
     2296<A NAME="TOC2" HREF="tcc-doc.html#SEC2">2. Command line invocation</A>
     2297<BR>
     2298<A NAME="TOC5" HREF="tcc-doc.html#SEC5">3. C language support</A>
     2299<BR>
     2300<A NAME="TOC10" HREF="tcc-doc.html#SEC10">4. TinyCC Assembler</A>
     2301<BR>
     2302<A NAME="TOC16" HREF="tcc-doc.html#SEC16">5. TinyCC Linker</A>
     2303<BR>
     2304<A NAME="TOC21" HREF="tcc-doc.html#SEC21">6. TinyCC Memory and Bound checks</A>
     2305<BR>
     2306<A NAME="TOC22" HREF="tcc-doc.html#SEC22">7. The <CODE>libtcc</CODE> library</A>
     2307<BR>
     2308<A NAME="TOC23" HREF="tcc-doc.html#SEC23">8. Developer's guide</A>
     2309<BR>
     2310<A NAME="TOC36" HREF="tcc-doc.html#SEC36">Concept Index</A>
     2311<BR>
     2312
     2313</BLOCKQUOTE>
     2314<HR SIZE=1>
     2315<A NAME="SEC_About"></A>
     2316<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
     2317<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Top">Top</A>]</TD>
     2318<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_Contents">Contents</A>]</TD>
     2319<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC36">Index</A>]</TD>
     2320<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="tcc-doc.html#SEC_About"> ? </A>]</TD>
     2321</TR></TABLE>
     2322<H1>About this document</H1>
     2323This document was generated on <I>December, 17  2017</I>
     2324using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
     2325"><I>texi2html</I></A>
     2326<P></P> 
     2327The buttons in the navigation panels have the following meaning:
     2328<P></P>
     2329<table border = "1">
     2330<TR>
     2331<TH> Button </TH>
     2332<TH> Name </TH>
     2333<TH> Go to </TH>
     2334<TH> From 1.2.3 go to</TH>
     2335</TR>
     2336<TR>
     2337<TD ALIGN="CENTER">
     2338 [ &lt; ] </TD>
     2339<TD ALIGN="CENTER">
     2340Back
     2341</TD>
     2342<TD>
     2343previous section in reading order
     2344</TD>
     2345<TD>
     23461.2.2
     2347</TD>
     2348</TR>
     2349<TR>
     2350<TD ALIGN="CENTER">
     2351 [ &gt; ] </TD>
     2352<TD ALIGN="CENTER">
     2353Forward
     2354</TD>
     2355<TD>
     2356next section in reading order
     2357</TD>
     2358<TD>
     23591.2.4
     2360</TD>
     2361</TR>
     2362<TR>
     2363<TD ALIGN="CENTER">
     2364 [ &lt;&lt; ] </TD>
     2365<TD ALIGN="CENTER">
     2366FastBack
     2367</TD>
     2368<TD>
     2369previous or up-and-previous section
     2370</TD>
     2371<TD>
     23721.1
     2373</TD>
     2374</TR>
     2375<TR>
     2376<TD ALIGN="CENTER">
     2377 [ Up ] </TD>
     2378<TD ALIGN="CENTER">
     2379Up
     2380</TD>
     2381<TD>
     2382up section
     2383</TD>
     2384<TD>
     23851.2
     2386</TD>
     2387</TR>
     2388<TR>
     2389<TD ALIGN="CENTER">
     2390 [ &gt;&gt; ] </TD>
     2391<TD ALIGN="CENTER">
     2392FastForward
     2393</TD>
     2394<TD>
     2395next or up-and-next section
     2396</TD>
     2397<TD>
     23981.3
     2399</TD>
     2400</TR>
     2401<TR>
     2402<TD ALIGN="CENTER">
     2403 [Top] </TD>
     2404<TD ALIGN="CENTER">
     2405Top
     2406</TD>
     2407<TD>
     2408cover (top) of document
     2409</TD>
     2410<TD>
     2411 &nbsp;
     2412</TD>
     2413</TR>
     2414<TR>
     2415<TD ALIGN="CENTER">
     2416 [Contents] </TD>
     2417<TD ALIGN="CENTER">
     2418Contents
     2419</TD>
     2420<TD>
     2421table of contents
     2422</TD>
     2423<TD>
     2424 &nbsp;
     2425</TD>
     2426</TR>
     2427<TR>
     2428<TD ALIGN="CENTER">
     2429 [Index] </TD>
     2430<TD ALIGN="CENTER">
     2431Index
     2432</TD>
     2433<TD>
     2434concept index
     2435</TD>
     2436<TD>
     2437 &nbsp;
     2438</TD>
     2439</TR>
     2440<TR>
     2441<TD ALIGN="CENTER">
     2442 [ ? ] </TD>
     2443<TD ALIGN="CENTER">
     2444About
     2445</TD>
     2446<TD>
     2447this page
     2448</TD>
     2449<TD>
     2450 &nbsp;
     2451</TD>
     2452</TR>
     2453</TABLE>
     2454<P></P>
     2455where the <STRONG> Example </STRONG> assumes that the current position
     2456is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of
     2457the following structure:
     2458<UL>
     2459<LI> 1. Section One  </LI>
     2460<UL>
     2461<LI>1.1 Subsection One-One</LI>
     2462<UL>
     2463<LI> ... </LI>
     2464</UL>
     2465<LI>1.2 Subsection One-Two</LI>
     2466<UL>
     2467<LI>1.2.1 Subsubsection One-Two-One
     2468</LI><LI>1.2.2 Subsubsection One-Two-Two
     2469</LI><LI>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp; <STRONG>
     2470&lt;== Current Position </STRONG>
     2471</LI><LI>1.2.4 Subsubsection One-Two-Four
     2472</LI></UL>
     2473<LI>1.3 Subsection One-Three</LI>
     2474<UL>
     2475<LI> ... </LI>
     2476</UL>
     2477<LI>1.4 Subsection One-Four</LI>
     2478</UL>
     2479</UL>
     2480
     2481<HR SIZE=1>
     2482<BR> 
     2483<FONT SIZE="-1">
     2484This document was generated
     2485on <I>December, 17  2017</I>
     2486using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
     2487"><I>texi2html</I></A>
     2488
     2489</BODY>
     2490</HTML>
Note: See TracChangeset for help on using the changeset viewer.