vbcc - portable ISO/ANSI C compiler (c) in 1995-2019 by Volker Barthelmann
vbcc is a portable and retargetable ISO/ANSI C compiler.
This archive contains the binaries for the compiler, preprocessor,
assembler, linker, frontend, message browser, as well as several
other tools to generate code for your installed targets.
All major parts of this distribution (including compiler,
preprocessor, libraries etc.) have been built using this system.
- is portable and retargetable
- comes with a global optimizer that can e.g. do common subexpression
elimination, constant propagation, function inlining and several
other optimizations across functions and modules (depending on
- should be compliant to ANSI/ISO89 and partially ISO99
- can generate code that runs on a plain 68000 CPU
- can generate code optimized for 020/030, 040 or 060
- can generate code that uses the 68881/2, 68040/060 FPUs directly
and comes with appropriate math-libraries
- can generate code that runs on PowerUp-boards, MorphOS systems
and AmigaOS4 systems
- generates standard Amiga-68k-objects, PPC-ELF-objects or
- offers a lot of useful extensions like variable-attributes
- comes with a message browser
- offers a lot of error/warning messages that can be turned on/off
Some changes since V0.9f:
Implemented hash table with a default size of 1000. Can be controlled by
Fixed bug with recursive struct definitions.
Fixed bug with C99 designated initializers.
Fixed C99 initializations of const objects.
Fixed bug with mixed dynamic initializations.
Fixed bug with partially initialized structs (C99).
Addded __noinline attribute.
m68k: General improvements of code generation.
m68k: Use ASR-sequence for signed division with a power of two.
m68k: Fixed peephole bug.
m68k: New attribute __fp0ret, to force float-return in fp0, disregarding a
m68k: Fixed bug with unsigned short array indexes > 32767.
m68k: Allow 16-bit multiplication.
m68k: Fix for possible register clobbering in PUSH loops going up.
m68k: Avoid using the same reqister for Dr:Dq in DIV?L.L instructions.
m68k: Fixed pointer differences in 16-bit int backend (vbccm68ks).
m68k: Fixed bug with shiftisdiv on big-endian hosts.
PPC: Optimized memcmp() in vclib and as assembler-inline.
vclib: Fixed snprintf() and vsnprintf() for sizes exactly matching the
vclib atari: Made gem.h compile without warning in ANSI/C89 mode.
vclib kick13: Support for 16-bit int. New config files.
vclib kick13: Workaround for IEEE single to double precision conversion in
Fixed some kick13 clib headers.
To use vbcc you need:
- an Amiga with OS 2.0 or higher
- enough RAM (it is possible to translate small programs with 1MB, but
for larger programs much more will be needed)
Stuff that is not needed, but may be very useful:
- make, touch etc.
- the Amiga OS-includes (they can be found on certain CDs)
- pipe-command (to use the message browser)
Also you should know how to use the shell and you should know ANSI C
(if you need a book I recommend (like everyone) "The C Programming
Language, Second Edition, ANSI C" by Kernighan and Ritchie).
vbcc is copyright in 1995-2017 by Volker Barthelmann.
This archive may be redistributed without modifications and used
for non-commercial purposes.
An exception for commercial usage is granted, provided that the target
CPU is M68k and the target OS is AmigaOS. Resulting binaries may be
distributed commercially without further licensing.
In all other cases you need my written consent.
This copyright applies to vc, vbcc and vsc.
This archive may contain other tools (e.g. assemblers or linkers)
which do not fall under this license. Please consult the corresponding
documentation of these tools.
Note that this distribution contains several programs, libraries etc.
that are from different authors and are under different legal status.
So always read the corresponding documentation to find out under
what conditions a certain file may be used, distributed etc.
Look for documentation in the doc-subdirectory. First, read
vbcc.pdf or vbcc.html to learn about the compiler and frontend.
For the other tools like assemblers and linkers, consider the
remaining documentation which can be found in this subdirectory.
If you think vbcc generates bad code, throws enforcer hits, crashes,
seems to be not ISO-compliant etc. and the problem is not mentioned
anywhere in this docs as known problem, please send a mail with your
system configuration, the vbcc version, the command line you used, the
source that caused the problem and a brief description of the problem
Also if you find problems with the includes, the libraries or you have
suggestions, dislikes etc. send us a mail.
Corrections, improvements etc. of the manuals are appreciated, too.
Volker Barthelmann vbcompilers.de
Frank Wille frankphoenix.owl.de