Amsterdam Compiler Kit (ACK) es un conjunto de compiladores y una cadena de herramientas reorientables escritos por Andrew Tanenbaum y Ceriel Jacobs, y mantenidos por David Given desde 2005. [1] Tiene interfaces para los siguientes lenguajes de programación : C , Pascal , Modula-2 , Occam y BASIC .
La notoriedad de ACK se debe al 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 idiomas de origen y plataformas de destino. [2] [3]
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 Clang fue adoptado como el 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 fue lanzado bajo las licencias BSD .
La máxima portabilidad se logra mediante el uso de un lenguaje intermedio que utiliza bytecode , llamado EM. Cada interfaz de lenguaje produce archivos de 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 de máquina nativo .
ACK incluye un enlazador y bibliotecario genéricos capaces de manipular archivos en el formato propio de ACK , basado en a.out ; funcionará en archivos que contengan código EM y también código de máquina nativo. Sin embargo, el código EM no se puede enlazar con el 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, comenzando incluso con CPU pequeñas de 8 bits.
* Versión 6.0