Compilador de C muy pequeño, de una sola pasada [single-pass], pensado sobre todo para programas sencillos, entornos limitados, docencia o experimentación y compatible con la mayoría de las versiones de C89 y C99. Un compilador normal, como GCC, hace varias fases de análisis y optimización. Un compilador de una sola pasada va leyendo el código fuente y generando salida casi al mismo tiempo. Incluye los ejecutables n2f, smlrc, smlrcc, smlrl y smlrpp, En paqueño ejemplo para ilustrar el compirlador.
$ nano linux.c
#include <stdio.h>
int main(void)
{
puts("Linux es un sistema genial");
return 0;
}
$ smlrcc linux.c -o linux
$ smlrcc test.c -o test.exe
$ smallerc main.c util.c -o programa
$ smallerc -DDEBUG -DMAX_VAL=100 -I./include programa.c -o programa
1.-
El mismo proceso paso a paso:
$ smlrpp hola.c hola.i
$ smlrc -SI ../include hola.i hola.asm
$ nasm -f elf hola.asm -o hola.o
$ smlrcc -asm n2f hola.c -o hola
$ smlrl hola.o -o hola
Nota.- Algunas funciones complejas de la biblioteca estándar, especialmente las que dependen mucho de macros o rasgos específicos de libc, pueden no funcionar igual que con GCC.