Интерпретатор нано-Форт
В этом репозитории я сохранил один свой проект более чем десятилетней давности. Проект давно закрыт, но сделан красиво и я потратил на него слишком много своего времени, чтобы просто предать его забвению. Возможно, кому-то будет интересно посмотреть на детали реализации, или даже использовать в каких-то устройствах.
Целью данного проекта было реализовать интерпретатор достаточно продвинутого языка программирования для сверхограниченного микроконтроллера. Цель проекта была успешно достигнута, ядро интерпретатора Форт, вместе с интерфейсом для интерактивного ввода программ, занимает 4к памяти на микроконтроллере AVR ATMega. Если интерактивный ввод програм не нужен, можно скинуть ещё 2к памяти. Также возможна компиляция под платформу x86-64, так гораздо проще отлаживать платформо-независимую функциональность. Как можно понять из наличия таких разных портов, интерпретатор можно достаточно легко перенести и на другие платформы, например, stm32.
Интерпретатор позволяет интерактивно добавлять новые слова в ППЗУ (EEPROM). Размер ППЗУ невелик, но Форт - один из немногих языков, программы на котором получаются меньше, чем если бы они были написаны на ассемблере.
Вся документация написана на английском языке. Вход в документацию через файл index.html. Подробно описаны все внутренности интерпретатора, список ключевых слов и т.п.
Собрать Форт консоль под x86_64-linux можно командой:
make TARG=x86_64-linux fcon
Аналогично, для сборки под avr
make TARG=avr fcon
Существует почти рабочий порт на 32-битную архитектуру x86, но из-за ограничений в ld я не смог добиться работающего результата (загрузчик ELF падает при загрузке выполняемого файла). Если Вы сумеете починить 32-битный порт, обязательно мне напишите.
Приятного просмотра, надеюсь кому-то проект окажется полезным.
Описание
нано-интерпретатор языка Форт для микроконтроллеров AVR