Amsterdam Compiler Kit

Amsterdam Compiler Kit
Тип Компилятор
Разработчики Эндрю Таненбаум и Серил Якобс
Написана на C
Операционные системы MINIX и Unix-like
Первый выпуск 1980-е
Последняя версия 6.0pre4 (8 августа 2010)
Репозиторий github.com/davidgiven/ack
Лицензия Лицензия BSD
Сайт tack.sourceforge.net

Amsterdam Compiler Kit (ACK) — межплатформенный набор компиляторов и инструментов, написанный Эндрю Таненбаумом и Серилом Якобсом, с 2005 года поддерживаемый Дэвидом Гивеном[1].

Известность 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.

Языки программирования

[править | править код]

Процессоры

[править | править код]

Версия 6.0 поддерживает только архитектуры i86 и i386, но присутствует поддержка арифметики чисел с плавающей запятой, если доступен FPU, а также архитектуру 8080[4].

Версия 6.0 поддерживает только следующие платформы:

  • i80 — CP/M
  • i86 — PC86 (загрузочные образы дискет)
  • i386 — Linux (исполняемые файлы ELF)

Примечания

[править | править код]
  1. The Amsterdam Compiler Kit (2005). Time line on official website.
  2. 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.
  3. 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.
  4. About the ACK. Дата обращения: 3 октября 2015. Архивировано 6 октября 2015 года.