File:  [gnuless NCC] / kandr / README
Revision (vendor branch): download - view: text, annotated - select for diffs
Sun Aug 11 04:54:55 2019 UTC (5 months, 2 weeks ago) by root
Branches: gnuless, MAIN
CVS tags: ncc010319, HEAD
K&R NCC 01-03-2019

This is NCC, the "new" C compiler. It is intended to be used as the system
compiler for BSD/64 (my port of pre-Reno 4.3BSD to Intel/AMD 64-bit desktops).

The dialect of C accepted by the compiler is basically pre-ANSI (K&R 1978) 
with some common extensions. (See the DIALECT file for specifics.) This is 
both a function of the compiler's purpose -- to operate on a mid-80s codebase 
-- and, admittedly, personal taste. 

The binary tools work on a proprietary object file format and produce a.out-
format executables. These are documented in obj.h and a.out.h respectively.

The compiler and its tools are fully functional and have been fairly well-
tested, though they are works in progress. In particular, the optimizer is
quite minimal: the framework for a more aggressive optimizer is there, but
for the moment only rudimentary data-flow analysis is done to aid the register
allocator and clean up the more egregious output from the code generator.

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. 

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

Charles Youse <>
December 27, 2018