Amsterdam Compiler Kit (ACK) es un conjunto de compiladores y una cadena de herramientas reutilizables escritos por Andrew Tanenbaum y Ceriel Jacobs, mantenidos desde 2005 por David Given. [1] Tiene interfaces para los siguientes lenguajes de programación : C , Pascal , Modula-2 , Occam y BASIC .
La notoriedad del ACK surge del hecho de que a principios de la década de 1980 fue uno de los primeros sistemas de compilación portátiles diseñados para soportar múltiples lenguajes de origen y plataformas de destino. [2] [3]
El ACK era conocido como la cadena de herramientas del compilador nativo de MINIX hasta que el espacio de usuario de MINIX fue reemplazado en gran medida por el de NetBSD (MINIX 3.2.0) y se adoptó Clang como compilador del sistema.
Originalmente era un software de código cerrado (que permitía distribuir binarios para MINIX como un caso especial), pero en abril de 2003 se lanzó bajo las licencias BSD .
La máxima portabilidad se logra mediante el uso de un lenguaje intermedio que utiliza código de bytes , llamado EM . Cada interfaz de lenguaje produce archivos de objetos EM , que luego se procesan a través de varios optimizadores genéricos antes de ser traducidos por un servidor a código de máquina nativo .
ACK viene con un enlazador genérico y un bibliotecario capaz de manipular archivos en el formato basado en a.out del ACK ; Funcionará en archivos que contengan código EM y código de máquina nativo. Sin embargo, el código EM no se puede vincular al código de máquina nativo sin traducir primero el binario EM.
Los backends ACK pueden producir código de máquina nativo para una amplia gama de CPU, incluso comenzando con CPU pequeñas de 8 bits.
* Versión 6.0