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
30-Dec-2008: vbcc 0.9 release.
Changes since last release:
  • Using vasm 1.3c and vlink 0.12 with many improvements.
  • New: vlink 0.12 has experimental support for dynamic linking. The frontend supports a -static option to force static linking.
  • New: -unsigned-char allows a char without qualifier to be treated as unsigned char instead of signed char.
  • New: Target "MiNT" (m68k-atarimint), which is a multitasking operating system for Atari computers. The linker was extended to support the MiNT-specific embedded a.out-format in a TOS exexutables, called aoutmint.
  • Fixed a bug with using bitfields in operations, which occured with -O2 optimization on big-endian hosts.
  • A combination of 64-bit shift and arithmetic-and operations generated illegal code on all targets.
  • Fixed bug with expressions of the form (pointer_type) (non_ptr +/- non_ptr) on machines that allow shortcutting conversion from int to pointer types.
  • Fixed bug with VLA (variable length array, C99) length 0.
  • Fixed illegal optimization of constant indexes in VLAs.
  • The volatile keyword was ignored in some situations when using -O2 optimization or higher.
  • Fixed some problems with incorrect struct-definitions after parse errors.
  • Error and warning messages are redirected to stderr.
  • Warning 224 must not appear, when a function returns the difference between two auto-variables.
  • Exit with a fatal error when an #include-recursion is detected, which means in this case that the nesting-level is > 1023.
  • Fixed __AMIGADATE__, which should add parentheses around the date.
  • Fixed wrong line number after an #include directive, when the line ends with CR/LF.
  • M68k code generator: Shortcut was erroneously used for (int)=(floatvar)/(floatconst)-(floatconst) converting the last floatconst into integer.
  • M68k code generator: __interrupt had a discrepancy between the number of saved and restored registers.
  • M68k code generator: Link register A5 got overwritten by local variables when used for a VLA.
  • M68k code generator: Used an address register as DBRA counter for a struct-push operation at -O1.
  • M68k code generator: For compatibility the __stdargs modifier is supported now, but ignored.
  • M68k code generator: Wrong adressing Mode An,<ea> for ADD occured sometimes with -O3 optimization.
  • PPC code generator: variables with a natural size of 8 (double precision float) have to be aligned to a 64-bit boundary, as not all PPC CPUs support 32-bit alignment.
  • PPC code generator: VLAs didn't work inside of a structure.
  • PPC code generator: 64-bit arguments were sometimes unnecessarily "extended" from 32 to 64 bits under PowerOpen-ABI (WarpOS).
  • i386 code generator: Fixed some 64-bit integer bugs.
  • C16x code generator: Better shift code generation.
  • C16x code generator: Fixed bug with save_result and r==tp.
  • vclib: Made freopen() depend on fopen() to make sure that the destructor which closes all open files is called.
  • vclib m68k: Returned sign of modulo operation was wrong in the cases (+)%(-) and (-)%(-).
  • vclib PowerUp: Fixed libpowerup.so, which can be generated by vlink now.

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.9.

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_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_target_m68k-ataritos.zip Compiler target Atari TOS M680x0.
vbcc_target_m68k-atarimint.zip Compiler target Atari MiNT M680x0.

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

Installing procedure for MiNT: Refer to the Unix installation instructions in chapter 1.3.1 of the vbcc manual.

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 $