-
Notifications
You must be signed in to change notification settings - Fork 20
/
README
31 lines (23 loc) · 1.39 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 and a few minor "fixes". (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 <[email protected]>
December 27, 2018