OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [doc/] [portability.texi] - Diff between revs 284 and 384

Only display areas with differences | Details | Blame | View Log

Rev 284 Rev 384
@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, 2002, 2004 Free Software Foundation, Inc.
@c 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@c For copying conditions, see the file gcc.texi.
 
 
@node Portability
@node Portability
@chapter GCC and Portability
@chapter GCC and Portability
@cindex portability
@cindex portability
@cindex GCC and portability
@cindex GCC and portability
 
 
GCC itself aims to be portable to any machine where @code{int} is at least
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
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).
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}
Target ABIs may have 8, 16, 32 or 64-bit @code{int} type.  @code{char}
can be wider than 8 bits.
can be wider than 8 bits.
 
 
GCC gets most of the information about the target machine from a machine
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
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
instructions.  This is a very clean way to describe the target.  But when
the compiler needs information that is difficult to express in this
the compiler needs information that is difficult to express in this
fashion, ad-hoc parameters have been defined for machine descriptions.
fashion, ad-hoc parameters have been defined for machine descriptions.
The purpose of portability is to reduce the total work needed on the
The purpose of portability is to reduce the total work needed on the
compiler; it was not of interest for its own sake.
compiler; it was not of interest for its own sake.
 
 
@cindex endianness
@cindex endianness
@cindex autoincrement addressing, availability
@cindex autoincrement addressing, availability
@findex abort
@findex abort
GCC does not contain machine dependent code, but it does contain code
GCC does not contain machine dependent code, but it does contain code
that depends on machine parameters such as endianness (whether the most
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)
significant byte has the highest or lowest address of the bytes in a word)
and the availability of autoincrement addressing.  In the RTL-generation
and the availability of autoincrement addressing.  In the RTL-generation
pass, it is often necessary to have multiple strategies for generating code
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
for a particular kind of syntax tree, strategies that are usable for different
combinations of parameters.  Often, not all possible cases have been
combinations of parameters.  Often, not all possible cases have been
addressed, but only the common ones or only the ones that 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
encountered.  As a result, a new target may require additional
strategies.  You will know
strategies.  You will know
if this happens because the compiler will call @code{abort}.  Fortunately,
if this happens because the compiler will call @code{abort}.  Fortunately,
the new strategies can be added in a machine-independent fashion, and will
the new strategies can be added in a machine-independent fashion, and will
affect only the target machines that need them.
affect only the target machines that need them.
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.