Amsterdam Compiler Kit
Encyclopedia
The Amsterdam Compiler Kit (ACK) is a fast, lightweight and retargetable compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, and is MINIX
's 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 an open source
BSD
license. It has frontends for programming language
s C
, Pascal
, Modula-2
, Occam
, and BASIC
.
The ACK achieves maximum portability by using an intermediate language
using bytecode
, called EM
. Each language front-end produces EM object file
s, 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.
* Version 6.0
Minix
MINIX is a Unix-like computer operating system based on a microkernel architecture created by Andrew S. Tanenbaum for educational purposes; MINIX also inspired the creation of the Linux kernel....
's native toolchain
Toolchain
In software, a toolchain is the set of programming tools that are used to create a product...
. The ACK was originally closed-source software (that allowed binaries
Executable
In computing, an executable file causes a computer "to perform indicated tasks according to encoded instructions," as opposed to a data file that must be parsed by a program to be meaningful. These instructions are traditionally machine code instructions for a physical CPU...
to be distributed for MINIX as a special case), but in April 2003 it was released under an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
BSD
BSD licenses
BSD licenses are a family of permissive free software licenses. The original license was used for the Berkeley Software Distribution , a Unix-like operating system after which it is named....
license. It has frontends for programming language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....
s C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
, Pascal
Pascal (programming language)
Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...
, Modula-2
Modula-2
Modula-2 is a computer programming language designed and developed between 1977 and 1980 by Niklaus Wirth at ETH Zurich as a revision of Pascal to serve as the sole programming language for the operating system and application software for the personal workstation Lilith...
, Occam
Occam (programming language)
occam is a concurrent programming language that builds on the Communicating Sequential Processes process algebra, and shares many of its features. It is named after William of Ockham of Occam's Razor fame....
, and BASIC
BASIC
BASIC is a family of general-purpose, high-level programming languages whose design philosophy emphasizes ease of use - the name is an acronym from Beginner's All-purpose Symbolic Instruction Code....
.
The ACK achieves maximum portability by using an intermediate language
Intermediate language
In computer science, an intermediate language is the language of an abstract machine designed to aid in the analysis of computer programs. The term comes from their use in compilers, where a compiler first translates the source code of a program into a form more suitable for code-improving...
using bytecode
Bytecode
Bytecode, also known as p-code , is a term which has been used to denote various forms of instruction sets designed for efficient execution by a software interpreter as well as being suitable for further compilation into machine code...
, called EM
EM intermediate language
The EM intermediate language is a family of intermediate languages created to facilitate the production of portable compilers. The language's specifications were created by Andrew Tanenbaum, Hans van Staveren, Ed G. Keizer, Johan W...
. Each language front-end produces EM object file
Object file
An object file is a file containing relocatable format machine code that is usually not directly executable. Object files are produced by an assembler, compiler, or other language translator, and used as input to the linker....
s, which are then processed through several generic optimisers before being translated by a back-end into native machine code
Machine code
Machine code or machine language is a system of impartible instructions executed directly by a computer's central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data Machine code or machine language is a system of impartible instructions...
.
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
- 6500
- 6800Motorola 6800The 6800 was an 8-bit microprocessor designed and first manufactured by Motorola in 1974. The MC6800 microprocessor was part of the M6800 Microcomputer System that also included serial and parallel interface ICs, RAM, ROM and other support chips...
(assembler only) - 6805 (assembler only)
- 6809 (assembler only)
- ARMARM architectureARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...
- 8080Intel 8080The Intel 8080 was the second 8-bit microprocessor designed and manufactured by Intel and was released in April 1974. It was an extended and enhanced variant of the earlier 8008 design, although without binary compatibility...
* - Z80
- Z8000
- i86Intel 8086The 8086 is a 16-bit microprocessor chip designed by Intel between early 1976 and mid-1978, when it was released. The 8086 gave rise to the x86 architecture of Intel's future processors...
* - i386
- 68000
- 68020
- 68040Motorola 68040The Motorola 68040 is a microprocessor from Motorola, released in 1990. It is the successor to the 68030 and is followed by the 68060. There was no 68050. In keeping with general Motorola naming, the 68040 is often referred to as simply the '040 ....
- NS32016
- S2650Signetics 2650The Signetics 2650, was a very early 8-bit microprocessor. According to Adam Osborne's classic book An Introduction to Microprocessors Vol 2: Some Real Products, it was "the most minicomputer-like" of the microprocessors available at the time....
(assembler only) - SPARCSPARCSPARC is a RISC instruction set architecture developed by Sun Microsystems and introduced in mid-1987....
- VAX4VAX 4000The VAX 4000 was a family of low-end minicomputers developed and manufactured by Digital Equipment Corporation using microprocessors implementing the VAX instruction set architecture . The VAX 4000 succeeded the MicroVAX family...
- PDP11
* Version 6.0
See also
- GNU Compiler CollectionGNU Compiler CollectionThe GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
- Portable C CompilerPortable C CompilerThe Portable C Compiler is an early compiler for the C programming language written by Stephen C...
- Small Device C CompilerSmall Device C CompilerThe Small Device C Compiler is an open source, partially retargetable C compiler for microcontrollers. It is distributed under the GNU General Public License. The package also contains a linker, assembler, simulator and debugger...