The SubC Compiler

SubC is a fast and simple public domain compiler for a clean subset of the C programming language. It can compile itself and passes gcc -Wall -pedantic. Its internals are described in detail in the book

Practical Compiler Construction

Note that SubC is a teaching vehicle rather than a production compiler. Check the README files to find out what it can and cannot do. If you are planning to do something more serious with SubC, you may want to get the current version rather than the book version.

Current version: subc-20141207.tgz (tgz, ~120KB), README, Status
Previous version: subc-20140425b.tgz (tgz, ~110KB), README
DOS executables: subc-dos.zip (experimental, zip, ~140KB)
Book version: subc-2012.zip (zip, ~75KB), README
View the compiler sources online (book version)

The Windows runtime support code has been written by Jean-Marc Lienher (cod5.org). The Darwin back-end and startup module have been contributed by Romain LWPB. Many thanks for the great effort!

Targets

The current version supports the following platforms:

(The book version runs on FreeBSD/386 exclusively.)

FreeBSD   386   armv6 x86-64
Linux   386     x86-64
NetBSD     x86-64
OpenBSD   386      
Windows/MinGW   386      
Darwin     x86-64
  DOS     8086      
 
stable Regression tested before release. Should run on most versions of the OS.
untested Not tested. May require some tweaking; may not run on all OS versions.
experimental Work in progress. Expect lots of bugs.
broken Known not to build. Substantial hacking required to fix.
GLIBC Uses GLIBC as a system call layer. Expect bugs!

No color? Please see the README in the archive for an ASCII rendition of the above table.

Changes since the Book Version


contact