# Vbcc

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Vbcc
> Markdown URL: https://mediated.wiki/source/Vbcc.md
> Source: https://en.wikipedia.org/wiki/Vbcc
> Source revision: 1353620077
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

{{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](/source/ANSI_C)
 | operating_system = Multiplatform
 | genre = [Cross compiler](/source/Cross_compiler)
 | license = [Freeware](/source/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](/source/ANSI_C) compiler. It supports [C89](/source/C89_(C_version)) (ISO/IEC 9899:1989) as well as parts of [C99](/source/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](/source/8-bit), [16-bit](/source/16-bit), [32-bit](/source/32-bit) and [64-bit](/source/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](/source/680x0), [ColdFire](/source/Freescale_ColdFire), [PowerPC](/source/PowerPC), [6502](/source/6502), [65C02](/source/65C02), [65C816](/source/65C816) (in native mode), [VideoCore](/source/VideoCore), [80x86](/source/80x86) (386 and above), [Alpha](/source/DEC_Alpha), [C16x/ST10](/source/C166_family), [6809](/source/6809)/[6309](/source/6309)/[68HC12](/source/68HC12), and [Z-machine](/source/Z-machine).

The compiler itself can run on all common operating systems, including [Windows](/source/Microsoft_Windows), [Mac OS X](/source/Mac_OS_X), and [Unix](/source/Unix)/[Linux](/source/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](/source/register_allocation)
*register allocation for global variables 
*global [common subexpression elimination](/source/common_subexpression_elimination)
*global [constant propagation](/source/constant_propagation)
*global copy propagation 
*[dead code elimination](/source/dead_code_elimination)
*[alias analysis](/source/alias_analysis) 
*[loop unrolling](/source/loop_unrolling)
*induction variable elimination 
*[loop-invariant code motion](/source/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

---
Adapted from the Wikipedia article [Vbcc](https://en.wikipedia.org/wiki/Vbcc) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Vbcc?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
