El Amsterdam Compiler Kit (ACK) es un conjunto de compiladores y herramientas reorientables escritos por Andrew Tanenbaum y Ceriel Jacobs , mantenido desde 2005 por David Given . [ 1 ] Tiene interfaces para los siguientes lenguajes de programación : C , Pascal , Modula-2 , BASIC y Occam .
Historia
La importancia del ACK radica en que, a principios de la década de 1980, fue uno de los primeros sistemas de compilación portátiles diseñados para admitir múltiples lenguajes fuente y plataformas de destino. [ 2 ] [ 3 ]
El ACK era conocido como el conjunto de herramientas de compilación nativa de MINIX hasta que el espacio de usuario de MINIX fue reemplazado en gran medida por el de NetBSD (MINIX 3.2.0) y Clang fue adoptado como compilador del sistema.
Originalmente era software de código cerrado, distribuido inicialmente por el propio Tanenbaum, [ 4 ] posteriormente a través de UniPress Software y Transmediair Utrecht como distribuidores en América y Europa respectivamente. La distribución de los binarios del compilador para MINIX fue un caso especial en este acuerdo. [ 5 ] En abril de 2003, se publicó bajo las licencias BSD .
Principio de funcionamiento
La máxima portabilidad se logra mediante el uso de un lenguaje intermedio que utiliza bytecode , llamado EM-1 [ 6 ] o EM . Cada front-end de lenguaje produce archivos objeto EM , que luego se procesan a través de varios optimizadores genéricos antes de ser traducidos por un back-end a código máquina nativo .
ACK incluye un enlazador y un gestor de bibliotecas genéricos capaces de manipular archivos en su propio formato basado en a.out ; funciona tanto con código EM como con código máquina nativo. Sin embargo, el código EM no se puede enlazar con código máquina nativo sin traducir previamente el binario EM.
Procesadores de destino
Los sistemas backend de ACK pueden generar código máquina nativo para una amplia gama de CPU, incluso para las pequeñas CPU de 8 bits.
- 6502
- 65C124 : utilizado para el primer desfibrilador implantable controlado por software, el objetivo era único en el sentido de que el tamaño de la palabra de código C/EM era de 1 byte para un entero y de 2 bytes para un número largo.
- 6800 (solo ensamblador)
- 6805 (solo para ensambladores)
- 6809 (solo para ensambladores)
- BRAZO
- 8080 *
- Z80
- Z8000
- Intel 8086 *
- i386
- 68000
- 68020
- 68040
- NS32016
- S2650 (solo para ensambladores)
- SPARC
- VAX4
- PDP-11
- Broadcom VideoCore IV (BCM2708) *
* Versión 6.0
Véase también
Referencias
- ↑ "The Amsterdam Compiler Kit" . 2005.Cronograma en el sitio web oficial.
- ↑ Tanenbaum, Andrew S; van Staveren, H.; Keizer, EG; Stevenson, JW (1983). "Un kit de herramientas práctico para hacer compiladores portátiles" . Communications of the ACM . 26 (9): 654– 660. doi : 10.1145/358172.358182 . hdl : 1871/2605 . S2CID 1217657 .
- ↑ AV Aho, R. Sethi y JD Ullman (1986). Compiladores: Principios, técnicas y herramientas ("El libro del dragón") . Addison-Wesley. pág . 511. ISBN 0-201-10088-6.
- ↑ "The Amsterdam Compiler Kit" . Boletín del Grupo de Usuarios de UNIX de Australia . Julio de 1984. pág. 17. Consultado el 21 de octubre de 2025 .
- ↑ Tanenbaum, Andrew S. (1988). MINIX para IBM PC, XT y AT . Prentice Hall. págs. xv . Recuperado el 21 de octubre de 2025 .
- ↑ FOLDOC. "EM-1"
- Compiladores BASIC
- Compiladores de C (lenguaje de programación)
- Informática en los Países Bajos
- Compiladores libres y de código abierto
- Tecnologías de la información en los Países Bajos
- Minix
- Compiladores Modula-2
- Compiladores de Pascal (lenguaje de programación)
- Software que utiliza la licencia BSD.
- Software libre y de código abierto (stubs)