Pequeña-C - Small-C

Pequeña-C
Desarrollador (es) Ron Cain, James E. Hendrix
Versión inicial 1980 ; Hace 41 años ( 1980 )
Escrito en Lenguaje de programación C
Tipo Compilador
Licencia Derechos de autor pero compartibles

Small-C es tanto un subconjunto del lenguaje de programación C , adecuado para microcomputadoras con recursos limitados y sistemas integrados , como una implementación de ese subconjunto. Originalmente valiosa 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 propósitos 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 del Journal of Computer Calisthenics & Orthodontia del Dr. Dobb . James E. Hendrix mejoró y amplió el compilador original y escribió The Small-C Handbook . Ron bootstrap Small-C en el SRI International PDP-11 /45 Unix sistema con una cuenta proporcionada por John Bass para el desarrollo Pequeño C. El código fuente proporcionado fue liberado con permiso de administración al 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 homólogos de Unix , el compilador genera código ensamblador , que luego debe ser traducido a código máquina por un ensamblador disponible .

Small-C es un compilador retargetable . Portar Small-C solo requiere que el generador de código de back-end y las llamadas de interfaz de biblioteca a sistema operativo se reescriban para el procesador de destino.

Subconjunto de idiomas

"En mayo de 1980, el Dr. Dobb's Journal publicó un artículo titulado" Un pequeño compilador de C para los años 8080 "en el que Ron Cain presentaba 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 lenguaje en el que estaba escrito, el que compiló. ¡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 una sola pasada, 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 bucle era la instrucción while. No había operadores booleanos, por lo que En su lugar, se utilizaron los operadores lógicos bit a bit & (AND) y | (OR), pero incluso con estas limitaciones, era un lenguaje muy capaz y un placer de usar, especialmente en comparación con el lenguaje ensamblador.

Reconociendo la necesidad de mejoras, Ron me animó a producir una segunda versión, y en diciembre de 1982 también apareció en el 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 declaraciones for, do / while, switch y goto, ( 6) operadores de asignación de combinación, (7) operadores booleanos, (8) el operador de complemento a uno, (9) bloquear variables locales y (10) varias otras características. Luego, en 1984, Ernest Payne y yo desarrollamos y publicamos una biblioteca en tiempo de ejecución compatible con CP / M para el compilador. Constaba de 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. Esta se convirtió en la versión 2.1 y en el tema del Manual Small C. "

Ver también

  • BDS C (1979): compilador de C para sistemas Z80 y 8080
  • MISOSYS C (1985) - compilador C para TRS-80 (CPU Z80)
  • Tiny C (2002): compilador de C para computadoras lentas x86 y ARM que tienen poco espacio en disco

Variantes de Small-C

Referencias

Notas

  • Ron Cain, "A Small C Compiler for the 8080's", Dr. Dobb's Journal , abril-mayo de 1980, págs. 5-19
  • James E. Hendrix, El manual de Small-C , Reston 1984, ISBN  0-8359-7012-4
  • James E. Hendrix, A Small C Compiler: Language, Usage, Theory, and Design , M & T Books 1988, ISBN  0-934375-88-7
  • James E. Hendrix, Compilador de Small C , M & T Books 1990, ISBN  1-55851-124-5

enlaces externos