vbcc logo

vbcc is a highly optimizing portable and retargetable ISO C compiler. It supports ISO C according to ISO/IEC 9899:1989 and a subset of the new standard ISO/IEC 9899:1999 (C99).

This is the support site for Amiga (AmigaOS, MorphOS) and Atari (TOS, MiNT, Jaguar).

Release
vbcc main
Downloading instructions
Current vbcc binary archives
Current vbcc target archives
vbcc 0.9h release
vbcc 0.9g release
vbcc 0.9f release
vbcc 0.9e release
vbcc 0.9d release
vbcc 0.9b release
vbcc 0.9a release
vbcc 0.9 release
vbcc 0.8j release
vbcc 0.8i release
vbcc 0.8h release
vbcc 0.8g release
Old vbcc releases (0.8-0.8f)

Docs
vbcc docs (pdf)

Links
vbcc home page
vasm
vlink
31-Jan-2012: vbcc 0.9b patch 1.

The fd2pragma program from the AmigaOS/68k binary distribution crashed.

Either download the patch-archive (grey) and extract it in vbcc: or download the full archive.

Patch for vbcc_bin_amigaos68k
vbcc_bin_amigaos68k_upd.lha extract to vbcc:
vbcc_bin_amigaos68k.lha AmigaOS 2.x/3.x 68020+ binaries.


05-Aug-2011: vbcc 0.9b release.
Changes since last release:
  • New: C99 designated struct initializers.
  • New: C99 initialization of auto variables with non-constant data.
  • New: Common Atari M68k target for TOS and MiNT, supporting 32 and 16 bit integer.
  • New: Atari ColdFire support.
  • New: The compiler for AmigaOS2.x, AmigaOS3.x and MorphOS does automatic stack extension to 64k now.
  • New: Amiga version string $VER: in binaries.
  • In a function using VLA variables with multiple exit points the return code could be trashed.
  • Fixed bug in jump-optimization: threading jumps to jumps could produce a temporarily slightly damaged flowgraph that interferes with other jump optimizations.
  • Uninitialized variable in for-statement made the for-loop disappear in some environments.
  • Fixed missing check when moving common ICs to predecessor. For example the optimizer didn't see that a variable, whose address is passed into a subroutine, is modified.
  • Restoring of registers across function calls was sometimes done too early.
  • Fixed a bug with function declarations that contain closing parentheses after the parameter list.
  • Sometimes, mainly under MorphOS 2.x, a duplicate case label warning was erroneously generated, causing bad switch-code.
  • Changed an internal error to a normal one if jumps to non-existent labels are discovered during optimizing.
  • Fixed bug with recursive exiting on errors during some cleanup.
  • Disallow a shortcut between int and float.
  • Fixed problem with 64-bit library functions and adressing modes.
  • Fixed internal error with bitfield type checking.
  • Fixed compiler crash with unsupported gcc attributes.
  • C99: Fixed warning with union initializers in C99 mode.
  • C99: Fixed wrong stack calculation for variables declared in a for-statement.
  • M68k codegen: Fixed bug with missing offset-labels for Coldfire.
  • M68k codegen: Fixed bug with float constants pushed on stack for Coldfire.
  • M68k codegen: Fixed lots of illegal ISA-A Coldfire instructions.
  • M68k codegen: Fixed floating point to unsigned integer conversion.
  • M68k codegen: Fixed missing saving of FPU regs around long long to float conversion calls.
  • M68k codegen: Optimize size of floating points constants.
  • M68k codegen: Sometimes generated FBcc instead of Bcc for 64-bit comparisons, when the function contained FPU code.
  • M68k 16bit codegen: Fixed internal error when pushing small structs.
  • M68k 16bit codegen: Do not crash after shift operations.
  • PPC codegen: Support bitfields with non-standard types (M68k already did that).
  • i386 codegen: Fixed float-integer conversion.
  • vprof: Updated our profiler to work with the new (6 years old) mon.out files.
  • config: Made the default library search path last in the list to allow overriding.
  • config: The OS4 vclib and newlib config files automatically search for shared objects in SObjs: to link with.
  • config: OS4 linker script accepts .ctors.* and .dtors.* sections.
  • Frontend: Fixed -static option, which had no effect on user libraries.
  • vclib: -stack-check caused a linking error, because vclib was calling the wrong exit function for most targets.
  • vclib: Moved errno into the startup code for warpos to be compatible to aos68k and improve linking of mixed executables. vlink also got a new option -da to support that.
  • vclib: setlocale() accepts setting the default "C" locale. All Amiga targets will import the current locale settings from the locale.library when setlocale() is called with locale="". (Patch submitted by Stefan A. Haubenthal.)
  • vclib: vsnprintf() only used size-1 bytes of the buffer.
  • vclib: getenv() crashed under Kickstart 1.x.
  • vclib: Kickstart 1.x compatibility (still uses OS2.x/OS3.x functions when available). Comes with a 1.x compatible startup code and a new config file called kick13.
  • vclib: Make sure the softfloat versions of log() and log10() divide by zero at runtime to generate a proper infinity or NaN.
  • vclib: Added missing isnan() and isinf() prototypes in math.h.
  • vclib: Harry Sintonen fixed a problem with exp() and pow() in the FPSP060 code of m040.lib, which produced wrong results unter MorphOS' FPU emulation.
  • libauto/libraauto (OS4): Included much more libraries and classes to open automatically.
  • TinyGL support (libGL.a) for MorphOS.
  • Comes with vasm 1.5b and vlink 0.14 with many more bug fixes and improvements. Refer to the appropriate change list for details.

In such a complex project there will of course be bugs. Most, especially the serious, bug fixes will be available immediately as a patch. The rest comes with the next release, or by request from the author (see below).
Downloading vbcc 0.9b.

You need to pick the appropriate binary archive for your host platform. Then you can add as many target archives as you need.

Example: If you own a Pegasos running MorphOS and would like to develop programs for MorphOS and AmigaOS/68k, you have to pick the vbcc_bin_morphos archive for the binaries as well as the target archives vbcc_target_ppc-morphos and vbcc_target_m68k-amigaos. Install the binary archive first, using the provided Amiga installer, then add the targets.

The PowerUp and WarpOS binary archives are additional, which means that you need to have a base binary archive already installed. Typically this would be the vbcc_bin_amigaos68k archive.

All target archives are lha-packed, while the Atari targets are also available as zip-archives to make unpacking easier for Atari users.

Other host platforms. vbcc is portable enough to run under all operating systems which offer a working ANSI-C compiler, e.g. BSD, Linux, MacOS and Windows. If you need a port for your system, try to contact the authors.

vbcc_bin_amigaos68k.lha AmigaOS 2.x/3.x 68020+ binaries.
vbcc_bin_amigaosppc.lha AmigaOS 4.x binaries.
vbcc_bin_morphos.lha MorphOS binaries.
vbcc_bin_powerup.lha Additional PowerUp binaries. For use under AmigaOS/68k.
vbcc_bin_warpos.lha Additional WarpOS binaries. For use under AmigaOS/68k.
vbcc_bin_mint.tar.gz Atari MiNT binaries.
vbcc_target_m68k-amigaos.lha Compiler target AmigaOS 2.x/3.x M680x0.
vbcc_target_m68k-atari.lha Compiler target Atari TOS/MiNT M680x0.
vbcc_target_m68k-atari.zip Compiler target Atari TOS/MiNT M680x0 (without Amiga install script).
vbcc_target_cf-atari.lha Compiler target Atari TOS/MiNT ColdFire.
vbcc_target_cf-atari.zip Compiler target Atari TOS/MiNT ColdFire (without Amiga install script).
vbcc_target_ppc-amigaos.lha Compiler target AmigaOS 4.x PowerPC.
vbcc_target_ppc-morphos.lha Compiler target MorphOS PowerPC.
vbcc_target_ppc-powerup.lha Compiler target PowerUp PowerPC.
vbcc_target_ppc-warpos.lha Compiler target WarpOS PowerPC.
vbcc_unix_config.zip Default config files for all targets with Unix/MiNT paths.

Installation procedure for AmigaOS/MorphOS: Just click the Install icon. Or refer to chapter 1.3.3 of the documentation for a manual installation.

Installation procedure for MiNT: Refer to the Unix installation instructions in chapter 1.3.1 of the vbcc manual. You may want to download the Unix default config files from above, because all configs from the target archives contain Amiga paths.

Please support vbcc by contacting the authors if you find any bugs or problems. Supporting nine different architectures makes testing extremely time consuming, so this release is probably not free of bugs.

For problems with the compiler core contact Dr. Volker Barthelmann (vbemail), and for Amiga/Atari-specific problems, including assembler, linker, startup-codes and linker-libraries, contact Frank Wille (fwemail).

$Id: index.php,v 1.26 2023/09/30 11:59:02 frank Exp $