Amsterdam Compiler Kit
{{Short description|Retargetable charger suite}}
{{Infobox software
| developer = Andrew Tanenbaum, Ceriel Jacobs;
Currently: David Given
| released = early 1980s
| latest release version = 6.0pre5
| latest release date = {{start date and age|2016|06|02}}
| operating system = Minix, Unix-like
| programming language = C
| genre = Retargetable compiler
| license = BSD licenses
| website = {{URL|tack.sourceforge.net}}
}}
The Amsterdam Compiler Kit (ACK) is a retargetable compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, since 2005 maintained by David Given.{{cite web|title=The Amsterdam Compiler Kit|url=http://tack.sourceforge.net/|year=2005 }} Time line on official website. It has frontends for the following programming languages: C, Pascal, Modula-2, Occam, and BASIC.
History
The ACK's notability stems from the fact that in the early 1980s it was one of the first portable compilation systems designed to support multiple source languages and target platforms.{{cite journal|last1=Tanenbaum|first1=Andrew S|first2=H. |last2=van Staveren |first3=E.G. |last3=Keizer |first4=J.W. |last4=Stevenson|title=A Practical Tool Kit For Making Portable Compilers|journal=Communications of the ACM|year=1983|volume=26|issue=9|pages=654–660|url=http://cacm.acm.org/magazines/1983/9/10627-a-practical-tool-kit-for-making-portable-compilers/abstract|doi=10.1145/358172.358182|hdl=1871/2605|s2cid=1217657|hdl-access=free}}{{cite book|last=A.V. Aho, R. Sethi & J.D. Ullman|title=Compilers: Principles, Techniques, and Tools ("The Dragon Book")|year=1986|publisher=Addison-Wesley|isbn=0-201-10088-6|page=[https://archive.org/details/compilersprincip00ahoa/page/511 511]}}
The ACK was known as MINIX's native compiler toolchain until the MINIX userland was largely replaced by that of NetBSD (MINIX 3.2.0) and Clang was adopted as the system compiler.
It was originally closed-source software (that allowed binaries to be distributed for MINIX as a special case), but in April 2003 it was released under the BSD licenses.
Working principle
Maximum portability is achieved by using an intermediate language using bytecode, called EM. Each language front-end produces EM object files, which are then processed through several generic optimisers before being translated by a back-end into native machine code.
ACK comes with a generic linker and librarian capable of manipulating files in the ACK's own a.out-based format; it will work on files containing EM code as well as native machine code. However, EM code cannot be linked to native machine code without translating the EM binary first.
Target processors
ACK backends can produce native machine code for a wide range of CPUs, even starting with small 8 bit CPUs.
- 6502
- 65C124 - used for the first software controlled implantable defibrrillator, the target was unique in that the C/EM code word size was 1 byte for an int and 2 bytes for a long.
- 6800 (assembler only)
- 6805 (assembler only)
- 6809 (assembler only)
- ARM
- 8080*
- Z80
- Z8000
- Intel 8086*
- i386
- 68000
- 68020
- 68040
- NS32016
- S2650 (assembler only)
- SPARC
- VAX4
- PDP-11
- Broadcom VideoCore IV (BCM2708)*
* Version 6.0
See also
{{Portal|Free and open-source software}}
References
{{Reflist}}
External links
- {{official website}}
- [https://github.com/davidgiven/ack Official sourcecode repository], including changelog (GitHub)
{{Pascal programming language family}}
{{CProLang}}
Category:C (programming language) compilers
Category:Computer science in the Netherlands
Category:Free and open source compilers
Category:Information technology in the Netherlands
Category:Pascal (programming language) compilers
Category:Software using the BSD license
{{Free-software-stub}}