]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/doc/portability.texi
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / doc / portability.texi
index c3d8e3913d779a603636e9bd500997e4015c30dd..c5f8048fabeba9c118128511068b18d53ba224ad 100644 (file)
@@ -1,5 +1,5 @@
 @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
 @c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
 @c This is part of the GCC manual.
 @c For copying conditions, see the file gcc.texi.
 
 @c This is part of the GCC manual.
 @c For copying conditions, see the file gcc.texi.
 
@@ -8,18 +8,19 @@
 @cindex portability
 @cindex GCC and portability
 
 @cindex portability
 @cindex 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 itself aims to be portable to any machine where @code{int} is at least
+a 32-bit type.  It aims to target machines with a flat (non-segmented) byte
+addressed data address space (the code address space can be separate).
+Target ABIs may have 8, 16, 32 or 64-bit @code{int} type.  @code{char}
+can be wider than 8 bits.
 
 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
 
 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.
+fashion, ad-hoc parameters have been defined for machine descriptions.
+The purpose of portability is to reduce the total work needed on the
+compiler; it was not of interest for its own sake.
 
 @cindex endianness
 @cindex autoincrement addressing, availability
 
 @cindex endianness
 @cindex autoincrement addressing, availability
@@ -30,9 +31,10 @@ 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
 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
+combinations of parameters.  Often, not all possible cases have been
+addressed, but only the common ones or only the ones that have been
+encountered.  As a result, a new target may require additional
+strategies.  You will know
 if this happens because the compiler will call @code{abort}.  Fortunately,
 the new strategies can be added in a machine-independent fashion, and will
 affect only the target machines that need them.
 if this happens because the compiler will call @code{abort}.  Fortunately,
 the new strategies can be added in a machine-independent fashion, and will
 affect only the target machines that need them.