turkishrational / ncc

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 <charles@gnuless.org>
December 27, 2018

About

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

License:Other


Languages

Language:C 99.7%Language:Makefile 0.2%Language:Assembly 0.1%Language:Batchfile 0.0%