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-May-2022: vbcc 0.9h patch 3.

All the target archives from the previous release are replaced.

This patch includes the following fixes:
  • Missing strtoimax() and strtoumax() in vclib.
  • vclib m68k: Fixed strncat() again to avoid writing a second NUL char.
  • vclib ppc-amigaos: suppress warnings about unknown section types when linking with gcc shared objects (newlib).
  • vclib ppc-morphos: Removed -no-align-args from the config, as MorphOS uses the V.4-ABI without modifications (64-bit args aligned on the stack).
  • vclib ppc-amigaos/ppc-morphos/ppc-powerup: the minimal startup code must not ignore the return code from main().
vbcc_target_m68k-amigaos.lha Compiler target AmigaOS 2.x/3.x M680x0.
vbcc_target_m68k-kick13.lha Compiler target Amiga Kickstart 1.2/1.3 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_m68k-jaguar.lha Compiler target Atari Jaguar M68k.
vbcc_target_m68k-jaguar.tar.gz Compiler target Atari Jaguar M68k (for Unix/MiNT 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 installation paths.


23-Mar-2022: vbcc 0.9h patch 2.

All archives from the original release are replaced.

This patch includes the following fixes:
  • Fixed loop optimization bug at -O3 or higher, which erroneously re-reads initial registers.
  • Fixed optimizer bug when moving function calls.
  • m68k: Fixed internal error at -O3 or higher with oldstyle function declarations and -amiga-softfloat.
  • vclib AmigaOS/MorphOS: fopen mode "a" didn't create a new file and mode "w+" didn't truncate an existing file.
  • vclib m68k: Fixed strncat() to append NUL even when the append-string is longer than the count.
  • vclib ppc-amigaos: suppress warnings about unknown section types when linking with gcc libraries and objects (newlib).
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. No installer.
vbcc_bin_win64.zip Windows 64-bit binaries. No installer.
vbcc_target_m68k-amigaos.lha Compiler target AmigaOS 2.x/3.x M680x0.
vbcc_target_m68k-kick13.lha Compiler target Amiga Kickstart 1.2/1.3 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_m68k-jaguar.lha Compiler target Atari Jaguar M68k.
vbcc_target_m68k-jaguar.tar.gz Compiler target Atari Jaguar M68k (for Unix/MiNT 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 installation paths.
vbcc0_9hP2.tar.gz The full vbcc V0.9h Patch 2 release source.


03-Mar-2022: vbcc 0.9h patch 1.

All the binary archives from the previous release are replaced.

This patch includes the following fixes:
  • m68k: -amiga-softfloat now also works with -sd (small data) and generates base-relative addressing modes for the MathIeee library base.
  • Fixed wrong type in strength reduction of LSHIFT IC, which could move a shift-left with an induction variable out of the loop with optimizations of -O2 and higher.
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. No installer.
vbcc_bin_win64.zip Windows 64-bit binaries. No installer.
vbcc0_9hP1.tar.gz The full vbcc V0.9h Patch 1 release source.


28-Feb-2022: vbcc 0.9h release.
New features:
  • Compiler defaults to C99, use -c89 to forbid C99 extensions.
  • Several improved warnings/error messages.
  • New option -sec-per-obj puts all code functions and data objects in their own section, which may be removed by linker section garbage collection.
  • Simple implementation of -merge-strings.
  • Added -warnings-as-errors option.
  • Define macros __OPTSPEED__/__OPTSIZE__ depending on options.
  • Recognize builtin functions with __asm_ prefix.
  • Added -depobj option.
  • Added -force-statics and -prefer-statics.
  • New backends for 6502 and 6809.
  • Support for charset conversions (8-bit targets).
  • Code compressor (currently only for 6502).
  • Better out-of-the-box support for non-8-bit-based types.
  • Several improvements regarding the backend interface.
  • m68k: defines macro __SMALL_DATA__ with -sd option
  • m68k: added -vbcccall/__vbccargs
  • vc: new option -rmcfg-* to disable options from a config file
  • vc: frontend does Unix-path conversion also for -o
  • vclib: New 6502 targets: Atari, BBC, C64, Mega65, NES, Simulator, X16
  • vclib: New 6809 targets: OS-9, Simulator
  • vclib: __gmtoffset and __dstflag may be overwritten separately
  • vclib: strftime() supports ISO-8601 date format through %F
  • vclib: added strtof()
  • vclib: m68k-amigaos based on NDK 3.2
  • vclib: m68k-amigaos supports Roadshow additions and <proto/bsdsocket.h>
  • vclib: m68k-amigaos adds reaction.lib for ReAction GUI support
  • vclib: m68k-amigaos UTC offset is automatically initialized when possible
  • vclib: m68k-amigaos configs use -amiga-softfloat (inlines) by default
  • vclib: m68k-atari small-data support and libraries
  • vclib: ppc-morphos support for (sysv,base)-ABI libraries
  • vclib: ppc-amigaos adapted to new SDK
Performance improvements:
  • Improved function inlining / cross-module inlining.
  • Several improvements in register allocation.
  • Improved constant propagation.
  • New peephole optimizations.
  • New optimization and tuning options for constant initializations.
  • Improved recalculation of stack slots.
  • Slightly improved common subexpression elimination.
  • Range-optimizations and induction variable shortening.
  • Allow strength reduction for constant left-shifts.
  • Handling of volatile is improved.
  • Compile-time calculations of constant pointer values.
  • m68k: improved register allocation
  • m68k: improved Fastcall-ABI support
  • m68k: improved builtin libcalls
  • m68k: improved copying of (long) doubles in memory with the FPU
  • m68k: better use of scaled addressing modes
  • m68k: some FPU code improvements
  • m68k: fixed performance regression of internal memcpy
  • vclib: reworked assembler inlines
Bug fixes:
  • Lots of fixes in the compiler core and backends. Thanks for your reports!
  • vclib: bad assert.h in 0.9g: it must be possible to include the assert-macro multiple times (with and without NDEBUG defined)
  • vclib: m68k-amigaos protos declare device library bases with struct Device*.
  • vclib: m68k-amigaos ReAction classes must not be automatically opened with auto.lib but with reaction.lib.
  • vclib: m68k-amigaos adds missing InvertString() for amiga.lib
  • vclib: PPC 64-bit signed modulo fixed
  • vclib: fixed mktime(), tm_mday is 1-based, and recognize gmtoffset
  • vclib: fgetpos() has to return 0 on success

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

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

This release's source archives are available via the links directly below.

vbcc0_9h.tar.gz The vbcc V0.9h release source.
vasm1_9.tar.gz The vasm V1.9 release source.
vlink0_17.tar.gz The vlink V0.17 release source.
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. No installer.
vbcc_bin_win64.zip Windows 64-bit binaries. No installer.
vbcc_target_m68k-amigaos.lha Compiler target AmigaOS 2.x/3.x M680x0.
vbcc_target_m68k-kick13.lha Compiler target Amiga Kickstart 1.2/1.3 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_m68k-jaguar.lha Compiler target Atari Jaguar M68k.
vbcc_target_m68k-jaguar.tar.gz Compiler target Atari Jaguar M68k (for Unix/MiNT 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 installation 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.

Installation procedure for Windows: Refer to the DOS/Windows installation instructions in chapter 1.3.2 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 $