Jump to content

vbcc

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Lambda (talk | contribs) at 22:43, 18 September 2010 (According to the documentation VBCC is not BSD licensed. It is freeware, with source available, but commercial use and modification disallowed.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

vbcc
Developer(s)Volker Barthelmann
Stable release
0.9a / October 16, 2009 (2009-10-16)
Operating systemMultiplatform
TypeCross compiler
LicenseFreeware
Websitewww.compilers.de

vbcc is the name of a portable and retargetable ISO/ANSI C compiler.

It supports ISO C according to ISO/IEC 9899:1989 and a subset of the new standard ISO/IEC 9899:1999.

It is divided into two parts. One is target-independent and the other is target-dependent. vbcc provides complete abstraction of host-arithmetic and target-arithmetic. It fully supports cross-compiling for 8bit, 16bit, 32bit and 64bit architectures.

Embedded systems are supported by features like different pointer-sizes, ROM-able code, inline-assembly, bit-types, interrupt-handlers, section-attributes, stack-calculation and many others (depending on the backend).

vbcc provides a large set of high-level optimizations as well as target-specific optimizations to produce faster or smaller code. it is also able to optimize across functions and modules. Target-independent optimizations includes:

  • cross-module function-inlining
  • partial inlining of recursive functions
  • inter-procedural data-flow analysis
  • inter-procedural register-allocation
  • register-allocation for global variables
  • global common-subexpression-elimination
  • global constant-propagation
  • global copy-propagation
  • dead-code-elimination
  • alias-analysis
  • loop-unrolling
  • induction-variable elimination
  • loop-invariant code-motion
  • loop-reversal

Currently backends (with different degree of maturity) exist 68k, Coldfire, PowerPC, 80x86 (386 and above), Alpha, C16x/ST10, 68HC12, z-machine architectures.

All common operating systems can be supported as host systems, including Windows and Unix/Linux systems.