- •General
- •Introduction
- •Legal
- •Installation
- •Installing for DOS/Windows
- •Installing for AmigaOS
- •Tutorial
- •The Frontend
- •Usage
- •The Compiler
- •General Compiler Options
- •Errors and Warnings
- •Data Types
- •Optimizations
- •Register Allocation
- •Flow Optimizations
- •Common Subexpression Elimination
- •Copy Propagation
- •Constant Propagation
- •Dead Code Elimination
- •Loop-Invariant Code Motion
- •Strength Reduction
- •Induction Variable Elimination
- •Loop Unrolling
- •Function Inlining
- •Intrinsic Functions
- •Unused Object Elimination
- •Alias Analysis
- •Inter-Procedural Analysis
- •Cross-Module Optimizations
- •Instruction Scheduling
- •Debugging Optimized Code
- •Pragmas
- •Register Parameters
- •Inline-Assembly Functions
- •Variable Attributes
- •Type Attributes
- •__typeof
- •__offsetof
- •Known Problems
- •Credits
- •Additional options
- •Small data
- •Small code
- •FPUs
- •Math
- •Stack
- •Known problems
- •PowerPC Backend
- •Additional options for this version
- •Stack
- •Stdarg
- •Known problems
- •DEC Alpha Backend
- •Additional options for this version
- •Stdarg
- •i386 Backend
- •Additional options for this version
- •Stdarg
- •Known Problems
- •c16x Backend
- •Additional options for this version
- •Stdarg
- •Known Problems
- •Additional options for this version
- •Stack
- •Stdarg
- •Known Problems
- •Instruction Scheduler
- •Introduction
- •Usage
- •Known problems
- •C Library
- •Introduction
- •Legal
- •Embedded Systems
- •Startup
- •Heap
- •Input/Output
- •Floating Point
- •Useless Functions
- •Linking/Locating
- •Startup
- •Floating point
- •Stack
- •Small data model
- •Restrictions
- •Minimal startup
- •amiga.lib
- •auto.lib
- •extra.lib
- •ixemul
- •Introduction
- •Legal
- •Usage
- •Startup
- •Floating point
- •Stack
- •Small data model
- •Restrictions
- •libamiga.a
- •libauto.a
- •libextra.a
- •WarpOS/PPC
- •Startup
- •Floating point
- •Stack
- •Restrictions
- •amiga.lib
- •auto.lib
- •extra.lib
- •MorphOS/PPC
- •Floating point
- •Stack
- •Small data model
- •Restrictions
- •libamiga.a
- •libauto.a
- •libextra.a
- •List of Errors
- •Backend Interface
2 |
vbcc manual |
This archive may contain other tools (e.g. assemblers or linkers) which do not fall under this license. Please consult the corresponding documentation of these tools.
vbcc contains the preprocessor ucpp by Thomas Pornin. Included is the copyright notice of ucpp (note that this license does not apply to vbcc or any other part of this distribution):
/*
*(c) Thomas Pornin 1999, 2000
*Redistribution and use in source and binary forms, with or without
*modification, are permitted provided that the following conditions
*are met:
*1. Redistributions of source code must retain the above copyright
*notice, this list of conditions and the following disclaimer.
*2. Redistributions in binary form must reproduce the above copyright
*notice, this list of conditions and the following disclaimer in the
*documentation and/or other materials provided with the distribution.
*4. The name of the authors may not be used to endorse or promote
*products derived from this software without specific prior written
*permission.
*
*THIS SOFTWARE IS PROVIDED ‘‘AS IS’’ AND WITHOUT ANY EXPRESS OR
*IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
*WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
*ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
*LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
*CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
*OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
*WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
*OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
*EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
1.3 Installation
The vbcc directory tree looks as follows:
‘vbcc/bin’
The executables.
‘vbcc/config’
Config files for the frontend.
‘vbcc/targets/<target>’
Subdirectory containing all files specific to a certain target (e.g. m68k-amigaos or ppc-eabi).
Chapter 1: General |
3 |
1.3.1 Installing for Unix
1.Extract the archive.
2.Set the environment variable VBCC to the vbcc directory. Depending on your shell this might be done e.g. by
VBCC=<prefix>/vbcc
or
setenv VBCC <prefix>/vbcc
3.Include <prefix>/vbcc/bin to your search-path. Depending on your shell this might be done e.g. by
PATH=<prefix>/vbcc/bin:"$PATH"
or
setenv PATH <prefix>/vbcc/bin:"$PATH"
1.3.2 Installing for DOS/Windows
1.Extract the archive.
2.Set the environment variable VBCC to the vbcc directory.
set VBCC=<prefix>\vbcc
3. Include <prefix>/vbcc/bin to your search-path.
set PATH=<prefix>\vbcc\bin;%PATH%
1.3.3 Installing for AmigaOS
To use vbcc on AmigaOS, several assigns have to be set (e.g. in ‘s:user-startup’):
assign >NIL: vbcc: <path to vbcc directory> assign >NIL: C: vbcc:bin add
assign >NIL: vbccm68k: vbcc:targets/m68k-amigaos assign >NIL: vincludem68k: vbccm68k:include
assign >NIL: vincludem68k: <path to your AmigaOS header files> ADD ;assign >NIL: ixinclude: <path to ixemul header files, if needed> assign >NIL: vlibm68k: vbccm68k:lib
assign >NIL: vbccppc: vbcc:targets/ppc-powerup assign >NIL: vincludeppc: vbccppc:include assign >NIL: vlibppc: vbccppc:lib
assign >NIL: vincludeppc: <path to your AmigaOS header files> ADD