Amsterdam Compiler Kit (ACK) — межплатформенный набор компиляторов и инструментов, написанный Эндрю Таненбаумом и Серилом Якобсом, с 2005 года поддерживаемый Дэвидом Гивеном[1].
Amsterdam Compiler Kit | |
---|---|
Тип | Компилятор |
Разработчики | Эндрю Таненбаум и Серил Якобс |
Написана на | C |
Операционные системы | MINIX и Unix-like |
Первый выпуск | 1980-е |
Последняя версия | 6.0pre4 (8 августа 2010) |
Репозиторий | github.com/davidgiven/ack |
Лицензия | Лицензия BSD |
Сайт | tack.sourceforge.net |
История
правитьИзвестность ACK обусловлена тем фактом, что в начале 1980-х годов это была одна из первых переносимых систем компиляции, разработанная для поддержки нескольких исходных языков и целевых платформ[2][3].
ACK был известен как собственный инструментарий компилятора операционной системы MINIX до тех пор, пока пользовательское пространство MINIX не было в значительной степени заменено на NetBSD (MINIX 3.2.0), а Clang не был принят в качестве системного компилятора.
Изначально ACK представлял собой программное обеспечение с закрытым исходным кодом (распространялся в откомпилированном виде вместе с MINIX), но в апреле 2003 года он был выпущен под лицензией BSD с открытым исходным кодом.
Принцип работы
правитьМаксимальная переносимость достигается за счет использования промежуточного языка с использованием байт-кода, называемого EM. Каждый языковой фронтенд создает объектные файлы EM, которые затем обрабатываются несколькими общими оптимизаторами, прежде чем быть переведенными бэкендом в машинный код.
ACK поставляется с универсальным компоновщиком и библиотекарем, способным манипулировать файлами в собственном формате ACK на основе a.out. ACK работает с файлами, содержащими как код EM, так и собственный машинный код, однако код EM не может быть связан с собственным машинным кодом без предварительного перевода двоичного файла EM.
Языки программирования
правитьПроцессоры
править- 6502
- 6800 (только язык ассемблера)
- 6805 (только язык ассемблера)
- 6809 (только язык ассемблера)
- ARM
- 8080
- Z80
- Z8000
- i86
- i386
- 68000
- 68020
- 68040
- NS32016
- S2650 (только язык ассемблера)
- SPARC
- VAX4
- PDP-11
Версия 6.0 поддерживает только архитектуры i86 и i386, но присутствует поддержка арифметики чисел с плавающей запятой, если доступен FPU, а также архитектуру 8080[4].
Платформы
править- 6502 — BBC Microcomputer
- ARM — Acorn Archimedes
- i80 — Hermac, Nascom
- Z80 — Hermac, Nascom, ограниченная поддержка CP/M
- Z8000 — без ОС
- i86 — PC/IX
- i386 — Xenix v3, Xenix SysV
- 68000 — 16 bit: MinixST; 32-bit: SunOS, Mantra, PMDS
- 68020 — SysV
- NS32016 — без ОС
- SPARC — Solaris, SunOS
- VAX4 — 4.2BSD
- PDP11 — Version 7 Unix
Версия 6.0 поддерживает только следующие платформы:
См. также
правитьПримечания
править- ↑ The Amsterdam Compiler Kit (2005). Time line on official website.
- ↑ Tanenbaum, Andrew S; van Staveren, H.; Keizer, E.G.; Stevenson, J.W. (1983). "A Practical Tool Kit For Making Portable Compilers". Communications of the ACM. 26 (9): 654—660. doi:10.1145/358172.358182. hdl:1871/2605. S2CID 1217657.
- ↑ A.V. Aho, R. Sethi & J.D. Ullman. Compilers: Principles, Techniques, and Tools ("The Dragon Book"). — Addison-Wesley, 1986. — P. 511. — ISBN 0-201-10088-6.
- ↑ About the ACK . Дата обращения: 3 октября 2015. Архивировано 6 октября 2015 года.
Ссылки
править- Домашняя страница ACK (англ.)
- Amsterdam Compiler Kit (ACK) information sheet (англ.)