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
- Supports C99 __func__.
- Fixed some cases where volatile was not respected.
- Fixed compiler crash when main() does not return int in
- Do not perform algebraic optimizations on "pointer - pointer".
Makes (char *)p - (char *)0 being treated as integer
- 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
- 68k: -sc (small code) works again, since switching from
PhxAss to vasm.
- 68k: New option -fastcall to pass function arguments in
- 68k: New option -fp2scratch to use fp2 as an
additional scratch register.
- 68k: Fixed bug with word/long register size in indexed addressing
- 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
- 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
- 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
- vclib: Improved pow2() and pow10() for
- 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
- vclib: sscanf() tried to read characters from a 0
filehandle in certain situations.
- vclib: Added missing ANSI-C89 functions strcoll() and
- vclib: m13.lib for Amiga Kickstart 1.x systems,
using mathffp.library instead of
- 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
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, 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
under all operating systems which offer a working ANSI-C compiler,
e.g. BSD, Linux, MacOS and Windows. The latest release source for vasm
here and for vlink
The latest vbcc source snapshot may be available
here, but it is
only rarely updated.
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.
Atari TOS binaries (68000).
Compiler target AmigaOS 2.x/3.x M680x0.
Compiler target Atari TOS/MiNT M680x0.
Compiler target Atari TOS/MiNT M680x0 (for Unix/MiNT hosts).
Compiler target Atari TOS/MiNT M680x0 (for TOS hosts).
Compiler target Atari TOS/MiNT ColdFire.
Compiler target Atari TOS/MiNT ColdFire (for Unix/MiNT hosts).
Compiler target Atari TOS/MiNT ColdFire (for TOS hosts).
Compiler target AmigaOS 4.x PowerPC.
Compiler target MorphOS PowerPC.
Compiler target PowerUp PowerPC.
Compiler target WarpOS PowerPC.
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
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 ().