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
- New: -unsigned-char allows a char without qualifier to
be treated as unsigned char instead of
- 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
- 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 >
- Fixed __AMIGADATE__, which should add parentheses around
- 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
- 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
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
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
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.
AmigaOS 2.x/3.x 68020+ binaries.
AmigaOS 4.x binaries.
Additional PowerUp binaries.
For use under AmigaOS/68k.
Additional WarpOS binaries.
For use under AmigaOS/68k.
Atari MiNT binaries.
Compiler target AmigaOS 2.x/3.x M680x0.
Compiler target AmigaOS 4.x PowerPC.
Compiler target MorphOS PowerPC.
Compiler target PowerUp PowerPC.
Compiler target WarpOS PowerPC.
Compiler target Atari TOS M680x0.
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
Please support vbcc by contacting the authors if you find
any bugs or problems. Supporting seven 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
and for Amiga/Atari-specific problems, including assembler, linker,
startup-codes and linker-libraries, contact
Frank Wille ().