{{Lowercase title}} {{Infobox Software | name = vbcc | screenshot = | caption = | developer = Volker Barthelmann | released = {{Start date and age|1995}} | latest_release_version = 0.9h patch 3 | latest_release_date = {{Start date and age|2022|05|22}} | programming_language = ANSI C | operating_system = Multiplatform | genre = Cross compiler | license = Freeware for non-commercial use | website = {{URL|www.compilers.de/vbcc.html}} }} thumb|Left path toolchain of Motorola 68k, right path toolchain of PowerPC '''vbcc''' is a portable and retargetable ANSI C compiler. It supports C89 (ISO/IEC 9899:1989) as well as parts of C99 (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 8-bit, 16-bit, 32-bit and 64-bit architectures.

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

vbcc supports the following backends, with different degrees of maturity: 68k, ColdFire, PowerPC, 6502, 65C02, 65C816 (in native mode), VideoCore, 80x86 (386 and above), Alpha, C16x/ST10, 6809/6309/68HC12, and Z-machine.

The compiler itself can run on all common operating systems, including Windows, Mac OS X, and Unix/Linux.

==Optimizations== The compiler 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 supported by vbcc include:

*cross-module function inlining *partial inlining of recursive functions *interprocedural dataflow analysis *interprocedural 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

==References== *{{Cite book |first=K.V.N. |last=Sunitha |title=Compiler Design |year=2013 |publisher=Pearson India |page=20 |isbn=9-332-50029-0 }} *{{Cite book |first=John |last=Aycock |title=Retrogame Archeology: Exploring Old Computer Games |year=2016 |publisher=John Aycock |page=82 |isbn=9-783-31930002-3 }}

==External links== *[http://www.compilers.de/vbcc.html Dr. Volker Barthelmann´s Compiler Page] *[http://sun.hasenbraten.de/vbcc/ vbcc - ISO/ANSI-C Compiler] *macOS **[http://dhs.nu/vbcc/ Atari cross development] **[http://lallafa.de/blog/2011/08/vbcc-0-9b-an-amiga-cross-compiler-for-mac-os-x/ Amiga cross development] **[http://blitterstudio.com/setting-up-an-amiga-cross-compiler-windows/ Windows cross development] *Linux **[https://linuxjedi.co.uk/2021/02/27/using-vbcc-as-an-amiga-cross-compiler-in-linux/ Amiga cross development]

Category:C (programming language) compilers Category:Amiga development software Category:MorphOS software Category:Atari ST software