Smaller C is a simple and small single-pass C compiler, currently supporting most of the C language common between C89/ANSI C and C99 (minus some C89 and plus some C99 features). Currently, it generates 16-bit and 32-bit 80386+ assembly code for NASM that can then be assembled and linked into DOS, Windows, Linux and Mac OS X programs. (You may use YASM or FASM instead of NASM) Code generation for MIPS CPUs is also supported (primarily for RetroBSD). The compiler is capable of compiling itself. The core compiler comes with a preprocessor (ucpp), a linker, and a compiler driver (the driver invokes the preprocessor, the core compiler, the assembler, and the linker and supports options similar to those of gcc).