The Small C Compiler was designed to translate a subset of the C language into assembly language. Small C is compatible with both Small Assembler and the Microsoftassembler MASM. Small C supports a small memory model with onecode and one data/stack segment.
Small C supports arrays of one dimension. Functions always return integer values. External functions are automatically declared. Initialization of global variables is supported. Thepreprocessor supports #include, #define, #ifdef, #ifndef, #else, #endif, #asm, #endasm commands.
The following control statements are supported: if, switch, case, default, break, continue, while, for, and do/while. All expression operators are supported. Only signed and unsigned integer and character data types are supported.
The following standard C features are not supported: structures, fields, unions, arrays of pointers, and casts.
Small C supports UNIX-like I/O redirection and command-line argument passing. The Small C library includes over 80 functions, a nearly complete set of the standard UNIX/C repertoire. Binary as well as character stream I/O is supported. The formatted I/O functions printf() and scanf() are included. Random access to files is provided. Programs can request additional file buffering.
The compiler itself is written in Small C and is distributed with both object and source code. As a self compiler, Small C can be modified to work in other environments and to meet special needs. Since everything is revealed and fully
documented, Small C has tremendous value as an educational device. Small C uses a single pass, recursive descent parsing algorithm. It generates p-codes for internal use, and optimizes its output.