Pequeña-C
Small-C es tanto un subconjunto del lenguaje de programación C, adecuado para microcomputadoras y sistemas integrados con recursos limitados, como una implementación de ese subconjunto. Originalmente valioso como un compilador temprano para sistemas de microcomputadoras disponibles a fines de la década de 1970 y principios de la de 1980, la implementación también ha sido útil como un ejemplo lo suficientemente simple para fines de enseñanza.
El compilador original, escrito en Small-C para Intel 8080 por Ron Cain, apareció en la edición de mayo de 1980 de Dr. Dobb's Journal of Computer Calisthenics & Ortodoncia. James E. Hendrix mejoró y amplió el compilador original y escribió The Small-C Handbook. Ron arrancó Small-C en el sistema Unix SRI International PDP 11/45 con una cuenta proporcionada por John Bass para el desarrollo de Small C. El código fuente proporcionado se publicó con permiso de administración en el dominio público. Small-C era importante para las computadoras pequeñas de una manera algo análoga a la importancia de GCC para las computadoras más grandes. Al igual que sus contrapartes de Unix, el compilador genera código ensamblador, que luego debe ser traducido a código de máquina por un ensamblador disponible.
Small-C es un compilador redireccionable. La migración de Small-C solo requiere que el generador de código de back-end y las llamadas de interfaz de la biblioteca al sistema operativo se reescriban para el procesador de destino.
Subconjunto de idioma
"En mayo de 1980, Dr. Dobb's Journal publicó un artículo titulado "A Small C Compiler for the 8080s" en el que Ron Cain presentó un pequeño compilador para un subconjunto del lenguaje C. La característica más interesante del compilador, además de su pequeño tamaño, era el idioma en el que estaba escrito, en el que compilaba. ¡Era un autocompilador! (Aunque esto es un lugar común hoy en día, era una idea bastante novedosa en ese momento). Con un algoritmo simple de un solo paso, su compilador generó lenguaje ensamblador para el procesador 8080. Sin embargo, al ser pequeño, tenía sus limitaciones. Solo reconocía caracteres, números enteros y matrices de una sola dimensión de cualquier tipo. El único dispositivo de control de bucles era la instrucción while. No había operadores booleanos, por lo que los operadores lógicos bit a bit & (Y) y | (OR) se utilizaron en su lugar. Pero incluso con estas limitaciones, era un lenguaje muy capaz y un placer de usar, especialmente en comparación con el lenguaje ensamblador.
Al reconocer la necesidad de mejoras, Ron me animó a producir una segunda versión, y en diciembre de 1982 también apareció en Dr. Dobb's Journal. El nuevo compilador aumentó Small C con (1) optimización de código, (2) inicialización de datos, (3) compilación condicional, (4) la clase de almacenamiento externo, (5) las instrucciones for, do/while, switch y goto, (6) operadores de asignación de combinación, (7) operadores booleanos, (8) operador de complemento a uno, (9) variables locales de bloque y (10) varias otras características. Luego, en 1984, Ernest Payne y yo desarrollamos y publicamos una biblioteca de tiempo de ejecución compatible con CP/M para el compilador. Consistía en más de 80 funciones e incluía la mayoría de las de la biblioteca de E/S estándar de UNIX C, las que pertenecían al entorno CP/M. Esto se convirtió en la versión 2.1 y el tema de The Small C Handbook.
Contenido relacionado
Píxel empaquetado
Circunvalación
PNL