Ещё один язык, похожий на Cowgol. Поддерживает генерацию в z80 и 6502. Компилер написан на Scala. В поставке есть игра Pong для NES (прилагаемая в каком-то NES-туториале и переписанная с асма).
Кто целевая аудитория?
Millfork был разработан как язык для разработчиков старых 8-битных платформ, в основном для разработчиков игр, которые мало используют расширенные возможности C, но у которых нет времени писать ассемблер.
Что послужило вдохновением?
Главными вдохновителями были Atalan, а также Quetzalcoatl, Batari BASIC и NESHLA. К сожалению, Atalan был заброшен, а компилятор остался в нерабочем состоянии. Цель Millfork — добиться успеха там, где Atalanпотерпел неудачу.
Какие платформы поддерживаются?
Большие программы в Millfork были разработаны для Commodore 64.
Millfork также был протестирован (через эмуляторы) для запуска тривиальных программ на других 8-битных компьютерах Commodore, 8-битных компьютерах Atari, Apple II, BBC Micro, ZX Spectrum 48k, NEC PC-88, MSX, CP/M, NES, Game Boy, Atari Lynx, Atari 2600 и MS-DOS.
Поддержка других устройств, использующих поддерживаемые процессоры, может быть легко добавлена, обычно без изменения компилятора.
Какие микропроцессоры поддерживаются?
- MOS 6502 и его потомки: 6510, 65C02, Ricoh 2A03 и в меньшей степени CSG 65CE02, Hudson Soft HuC6280 и WDC 65816. 6509 не поддерживается и не будет, однако с некоторой осторожностью к нему можно относиться как к обычному 6502.
- Intel 8080, Intel 8085, Zilog Z80, Sharp LR35902 (также известный как GBZ80)
- Существует также частичная экспериментальная поддержка Intel 8086 посредством автоматического преобразования 8080 в 8086. Сгенерированный код очень большой и очень медленный.
- Поддержка Motorola 6809 появится в будущем. Вы можете проверить ход работы, создав собственную платформу с использованием процессора 6809, но подавляющее большинство программ Millfork даже не скомпилируются.
Почему Millfork, когда я могу использовать ассемблер?
- Ассемблер не будет переносим. Если вы хотите использовать как 6502, так и Z80, вам придется поддерживать две отдельные кодовые базы.
- Милфорк более продуктивен. Программисту не нужно беспокоиться о распределении регистров или размерах переменных.
Почему Millfork, когда я могу использовать C?
- Миллфорк обычно немного быстрее.
- Нет среды выполнения, поэтому проще создавать небольшие программы.
- Многие функции, обычно встречающиеся в продвинутых ассемблерах, но редко встречающиеся в языках высокого уровня, также доступны в Millfork, например макросы, включение бинарных файлов, явное распределение памяти, инициализация массивов выражениями.
- Millfork более тщательно обращается с кодировкой текста.
- Большое разнообразие целочисленных типов почти произвольных размеров.
- Семантика разработана для 8-битных микропроцессоров, поэтому обычно требуется менее явное приведение типов.
- Низкоуровневые вещи, такие как перенос после арифметических операций или отдельных байтов более крупных переменных.
- Встроенная поддержка десятичной арифметики.
- Простое взаимодействие со ассемблером.
Звучит так, словно Миллфорк превосходит С во всех аспектах, верно?
К сожалению нет:
- Милфорк очень требователен. Он позволяет избежать компиляции сложных выражений, особенно тех, которые содержат более крупные переменные.
- Поддержка целочисленной математики не очень полная.
- Математическая поддержка чисел с плавающей запятой отсутствует.
- Арифметика указателей очень ограничена.
- Препроцессор Millfork менее мощный, чем препроцессор C.
- Нет поддержки связывания с внешними библиотеками, написанными не на Millfork. Вам нужно либо переписать внешнюю сборку в синтаксис сборки Millfork, либо сгенерировать статический двоичный файл и связать его вручную с помощью директивы file.
- Поскольку работа над компилятором находится в стадии разработки, некоторые из упомянутых проблем могут быть улучшены в будущем.
- У меня есть опыт работы с C и/или ассемблером. Что мне следует иметь в виду?
Посмотрите отличия от C и отличия от ассемблера.
Почему он называется Милфорк?
Это означает язык среднего уровня для компьютеров K ommodore .
(В Юте также есть шахтерский городок Милл-Форк, который, будучи подходящим компилятором для устаревших машин, в настоящее время заброшен.)
«Коммодор» не пишется через букву К!
Тсс.