Working on my table driven assembler I thought it would be nice to have a table driven C compiler as well. Looking around where to start I found Small-C originally by Ron Cain. The sources were sorted and the capabilities enhanced. After generating a version which could translate itself for a DOS (PC) and a TOS (Atari) version I stopped working. The first web home of PINC was the GNUPic home page.

Download: Archive with source, docs, tables for 68000, 8086, and 8051, and executables for DOS and TOS, 408KB.


Data types are (unsigned) chars and (signed) ints, the latter in the natural width of the destination machine. Pointers are of the same width as (unsigned) ints. Vectors have one dimension and can be of type char or int.

Nearly all controls of standard C are implemented: if, else, switch, case, default, while, do, for, break, continue, and return.

There are some preprocessor commands available: #define (without arithmetics, just replace), #include, and #asm.

PINC doesn't support: structs and unions, vectors with more than one dimension, floats, return types other than int, the operators "!", "~", "sizeof", "&&", "||", "?:", and ",", all assignment operators, and casts.

Please read the documentation for detailed description how to use PINC. There are also texts how to implement new tables for other processors and how to build up a tool chain.

Horizontal Bar.

Who to blame:

Back to my home page.

Comments and such stuff go to: [email protected]