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
22-Nov-2015: vbcc 0.9d patch 2.

A patch to make setjmp() and longjmp() save and restore FPU registers, which seems required since C99. Note that, for 68k, you have to link with the respective math library (m881, m040, m060) to get the function with FPU support. The PPC vclib will always assume that an FPU is present.

Additionally, the 68k archive contains the missing kick13 configuration file.

Extract to vbcc:. Does not include patch 1!

Patch for vbcc_target_m68k-amigaos
vbcc_target_m68k-amigaos_P2.lha
Patch for vbcc_target_ppc-amigaos
vbcc_target_ppc-amigaos_P2.lha
Patch for vbcc_target_ppc-morphos
vbcc_target_ppc-morphos_P2.lha
Patch for vbcc_target_ppc-powerup
vbcc_target_ppc-powerup_P2.lha
Patch for vbcc_target_ppc-warpos
vbcc_target_ppc-warpos_P2.lha


04-Jun-2015: vbcc 0.9d patch 1.

The following archive contains AmigaOS/68k FPU math libraries which return float values according to the Unix System V.4 ABI. Which means, additionally to fp0 a double/float return value is also returned in d0/d1. This makes it possible to link with softfloat modules and is for example required for writing Hollywood plugins.

Additional libraries for target m68k-amigaos
vbcc_target_m68k-amigaos-v4.lha extract to vbcc:


30-Dec-2014: vbcc 0.9d release.
Changes since last release:
  • New libcall interface makes all backends generate much better code, when doing a library call (e.g. for 64-bit arithmetics or soft-float).
  • Supports C99 __func__.
  • Fixed some cases where volatile was not respected.
  • Fixed compiler crash when main() does not return int in C99 mode.
  • Do not perform algebraic optimizations on "pointer - pointer". Makes (char *)p - (char *)0 being treated as integer again.
  • Relaxed rules for constant expressions involving conditional expressions. Fixes for example int x = 1<2?3:4 to be accepted as a constant expression.
  • Added diagnosis for empty struct/array initializers.
  • Fixed possible memory corruption with string constants of exactly 128 bytes length.
  • Stricter propagation of constants/VARADRs.
  • Do not emit unused local static variables in lower optimization levels as well.
  • Fixed problems with (void)((condition) || func()).
  • PPC: Fixed output of negative pointer constants on 64 bit hosts.
  • 68k: -sc (small code) works again, since switching from PhxAss to vasm.
  • 68k: New option -fastcall to pass function arguments in scratch registers.
  • 68k: New option -fp2scratch to use fp2 as an additional scratch register.
  • 68k: Fixed bug with word/long register size in indexed addressing mode.
  • 68k: Conversion of signed char to int, with 16 bit integer setting, fixed.
  • 68k: Fixed wrong alignment assumptions on pointer references.
  • 68k: Avoid certain addressing modes for soft-float ICs. This caused an index register to be used before it had been restored from the stack.
  • 68k: Fixed return register for long double.
  • 68k: Fixed incorrect order of restoring pushed registers during a 16 bit to 64 bits integer conversion.
  • 68k: Overwriting FP-register in float to unsigned conversion fixed.
  • 68k: Fixed bug with -(An)/(An)+ and internal libcalls.
  • ColdFire: 64bit add/sub with constants.
  • ColdFire: Corrected stack-adjustment for pushflag in bottom of function. In some case the stack was adjusted 4 bytes too far. Crashed on return.
  • ColdFire: Fixed bug with storing 64-bit values (stored0d1).
  • vclib: Major rework for Atari. Most files are shared between M68k and ColdFire. Also the same headers can be used for 16- and 32-bit backends.
  • vclib: libgem with all AES and VDI functions for Atari.
  • vclib: Many C99 functions and features added to the 6888x, 68040 and 68060 math libraries.
  • vclib: New m060.lib with math functions optimized for the 68060 FPU.
  • vclib: Improved pow2() and pow10() for 68060.
  • vclib: Fixed sqrt(float), sqrt(double), float to int64 and double to int64 in the softfloat library by using code from John R. Hauser's 2b release.
  • vclib: Adapted all math libraries to the new libcall interface.
  • vclib: sscanf() tried to read characters from a 0 filehandle in certain situations.
  • vclib: Added missing ANSI-C89 functions strcoll() and strxfrm().
  • vclib: m13.lib for Amiga Kickstart 1.x systems, using mathffp.library instead of mathieeesingbas.library.
  • vclib: Fixed 68060 unsigned 64-bit modulo.
  • AmigaOS/68k config files include -hunkdebug, so specifying -g on the commandline is sufficient now for getting line debug info.
  • Frontend lowers priority under AmigaOS/MorphOS, so other user processes are no longer affected by the compiler.

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

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, including an Installer script to work under AmigaOS/MorphOS. Target archives in tar.gz format are for Unix/MiNT, without Installer and config files. Target archives in zip format are recommended for Atari TOS systems, which use a different layout due to file system restrictions.

Other host platforms. vbcc is portable enough to run on all operating systems which offer a working ISO-C99 compiler, e.g. BSD, Linux, MacOS and Windows. The latest release source for vasm is available here and for vlink here. A recent vbcc source snapshot is available here, but it is only rarely updated (check the date).

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_bin_tos.zip Atari TOS binaries (68000).
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.tar.gz Compiler target Atari TOS/MiNT M680x0 (for Unix/MiNT hosts).
vbcc_target_m68k-atari.zip Compiler target Atari TOS/MiNT M680x0 (for TOS hosts).
vbcc_target_cf-atari.lha Compiler target Atari TOS/MiNT ColdFire.
vbcc_target_cf-atari.tar.gz Compiler target Atari TOS/MiNT ColdFire (for Unix/MiNT hosts).
vbcc_target_cf-atari.zip Compiler target Atari TOS/MiNT ColdFire (for TOS hosts).
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.tar.gz Default config files for all targets with Unix/MiNT paths.
vbcc0_9d.tar.gz The vbcc 0.9d release source.

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.

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 $