a 64-bit C compiler (and preprocessor, assembler, linker, etc.) for AMD64
Clone or download


This is NCC, the "new" C compiler. It targets the AMD64 architecture.
The compiler is fully ANSI C89 compliant, with the minor exception that
it doesn't support wide character constants or wide string literals. The 
binary tools work on a non-standard object file format and produce a.out-
style executables. These are documented in obj.h and a.out.h respectively.


1.0-alpha release:

The current release follows several days of mostly front-end modifications
to bring the compiler to full ANSI compliance. While the core K&R compiler
had been previously extensively tested, the new changes have not been, so
this is currently ALPHA quality.

I have tried my best to adhere to the ANSI C89 standard to the letter, with
the exception of the aforementioned wide characters/strings (which I have
purposely excluded, because they are mostly useless). I would appreciate
feedback if any non-standard behavior is observed. 

See ROADMAP for the path to a 1.0 stable release.


NCC includes:

ncc: compiler driver.
ncpp: an ANSI C89 compliant C preprocessor.
ncc1: the C compiler proper, produces assembly output
nas: accepts 16/32/64-bit Intel syntax assembly and produces .o object.
nld: the object linker - combines .o files into a.out executables.
nobj: object/executable inspector. 
nexec: tool to run ncc a.out binaries on 64-bit Intel/AMD Linux systems

These are all original works and are BSD-licensed. See LICENSE and comments.

Charles Youse <charles@gnuless.org>
January 13, 2019