DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(gcc.info) Portability

Info Catalog (gcc.info) VMS (gcc.info) Top (gcc.info) Interface
 
 GCC and Portability
 *******************
 
    The main goal of GCC was to make a good, fast compiler for machines
 in the class that the GNU system aims to run on: 32-bit machines that
 address 8-bit bytes and have several general registers.  Elegance,
 theoretical power and simplicity are only secondary.
 
    GCC gets most of the information about the target machine from a
 machine description which gives an algebraic formula for each of the
 machine's instructions.  This is a very clean way to describe the
 target.  But when the compiler needs information that is difficult to
 express in this fashion, I have not hesitated to define an ad-hoc
 parameter to the machine description.  The purpose of portability is to
 reduce the total work needed on the compiler; it was not of interest
 for its own sake.
 
    GCC does not contain machine dependent code, but it does contain code
 that depends on machine parameters such as endianness (whether the most
 significant byte has the highest or lowest address of the bytes in a
 word) and the availability of autoincrement addressing.  In the
 RTL-generation pass, it is often necessary to have multiple strategies
 for generating code for a particular kind of syntax tree, strategies
 that are usable for different combinations of parameters.  Often I have
 not tried to address all possible cases, but only the common ones or
 only the ones that I have encountered.  As a result, a new target may
 require additional strategies.  You will know if this happens because
 the compiler will call `abort'.  Fortunately, the new strategies can be
 added in a machine-independent fashion, and will affect only the target
 machines that need them.
 
Info Catalog (gcc.info) VMS (gcc.info) Top (gcc.info) Interface
automatically generated byinfo2html