LCC ("Local C Compiler" o "Little C Compiler") es un compilador pequeño y redirigido para el lenguaje de programación ANSI C. Aunque su código fuente está disponible sin cargo para uso personal, [2] no es software libre o de código abierto según las definiciones habituales porque los productos derivados de LCC no pueden venderse, aunque sí pueden venderse componentes no derivados de LCC. [1] Fue desarrollado por Chris Fraser y David Hanson .
LCC está pensado para ser muy sencillo de entender y está bien documentado; su diseño se describe en el libro de Fraser y Hanson A Retargetable C Compiler: Design and Implementation . El libro incluye la mayor parte del código fuente de la versión 3.6 del compilador, que se escribió como un programa alfabetizado utilizando noweb . A julio de 2011, la versión actual de LCC es la 4.2, pero gran parte del libro todavía se aplica a esta versión. El cambio más importante desde que se publicó el libro está en la interfaz del generador de código, que se describe en un documento independiente. [3]
El código fuente de LCC tiene alrededor de 20.000 líneas, lo que es mucho más pequeño que el de muchos compiladores importantes. [4]
LCC puede generar código para varias arquitecturas de procesador, incluidas Alpha , SPARC , MIPS y x86 ; también hay un backend LCC que genera el lenguaje intermedio común de Microsoft . [5]
El motor id Tech 3 de id Software se basa en una versión modificada de LCC para compilar el código fuente de cada módulo de juego o mod de terceros en bytecode dirigido a su máquina virtual . [6] Esto significa que los módulos son ajenos al sistema más allá de las llamadas del sistema y el alcance limitado del sistema de archivos ofrecido por el motor, lo que tiene como objetivo reducir la amenaza que plantean los autores de mods maliciosos. Otra consideración es que los juegos y mods escritos para el motor son portátiles sin recompilación; solo la máquina virtual necesita ser portada a nuevas plataformas para ejecutar los módulos.
lcc-win32 es un paquete de entorno de desarrollo integrado para Microsoft Windows que incluye una bifurcación de LCC. Existe una contraparte amd64 llamada lcc-win64, que está disponible desde el 15 de abril de 2012. [7]
El compilador de Pelles C es una versión muy modificada de LCC que proporciona compatibilidad con C11 y C17 , compatibilidad con amd64, técnicas de optimización adicionales como expansión en línea [8] y un IDE .
Para máquinas Windows de 32 bits, Lcc se utiliza como predeterminado si no hay otro compilador instalado para MathWorks MATLAB y productos relacionados. [9]
LCC es gratuito para uso personal y puede redistribuirse siempre que todos los medios de distribución y la documentación del producto lo reconozcan. La licencia LCC se basa en ejemplos en múltiples casos. LCC no puede venderse con fines lucrativos, pero puede incluirse con otro software que se venda con fines lucrativos, siempre que LCC se distribuya de forma gratuita. Hay licencias por usuario y de uso ilimitado disponibles poniéndose en contacto con Addison-Wesley, en particular para compiladores de lenguajes como C++, para el que un compilador de C puede constituir gran parte de su trabajo. [1]