Jump to content

Amsterdam Compiler Kit: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Lclacer (talk | contribs)
No edit summary
No edit summary
Line 1: Line 1:
The '''Amsterdam Compiler Kit''' is fast, lightweight and [[Retargetable compiler|retargetable]] compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, and was [[Minix]]' native toolchain. The ACK 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 a BSD open source license.
The '''Amsterdam Compiler Kit''' is fast, lightweight and [[Retargetable compiler|retargetable]] compiler suite and toolchain written by [[Andrew Tanenbaum]] and [[Ceriel Jacobs]], and was [[Minix]]' native toolchain. The ACK 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 a BSD open source license.


It has frontends for [[C programming language|C]], [[Pascal programming language|Pascal]], [[Modula-2]], [[Occam programming language|Occam]], and [[BASIC]].
It has frontends for [[C programming language|C]], [[Pascal programming language|Pascal]], [[Modula-2]], [[Occam programming language|Occam]], and [[BASIC]].

Revision as of 09:27, 1 November 2006

The Amsterdam Compiler Kit is fast, lightweight and retargetable compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, and was Minix' native toolchain. The ACK 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 a BSD open source license.

It has frontends for C, Pascal, Modula-2, Occam, and BASIC.

The ACK achieves maximum portability by using an intermediate byte-code language called EM. Each language front-end produces EM object files, which are then processed through a number of generic optimisers before being translated by a back-end into native machine code.

Unlike gcc's intermediate language, EM is a real programming language and could be implemented in hardware; a number of the language front-ends have libraries implemented in EM assembly. EM is a relatively high-level stack-based machine, and one of the tools supplied with ACK is an interpreter capable of executing EM binaries directly, with a high degree of safety checking. See the em document referenced below for more information.

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. (You can not, however, link EM code to native machine code without translating the EM binary first.)