Я ищу языки программирования общего назначения, которые
Ниже приведен мой список на данный момент, что я упустил?
Самодельная среда выполнения Forth может быть реализована в очень малом объеме памяти. Я знаю человека, который создал такую программу на Cosmac в 1970-х годах. Ядро программы занимало всего 30 *байт.
Я слышал, что чип-8, XPL0, PicoC, и цель CAML были портированы на калькуляторы. Википедия "в Лего мозговой Штрум" в статье перечислены куча языков программирования, которые якобы работают на Лего rcx или NXT с платформой Лего. Сделать любое из их встреча ваша "Живи кодирования" по критериям?
Вы, возможно, захотите проверить другие Forths микроконтроллер на четвертый Вики . В нем перечислены как минимум 4 Forths для микроконтроллеров AVR: amforth (которое вы уже упомянули), PFAVR, avrforth, и ByteForth. (Ссылки на переводчики, а также на данном сайте StackOverflow вопросы, включенные в "[встраиваемых систем][встраиваемых систем]" и wikibook).
Я бы порекомендовал Луа (или eLUA http://www.eluaproject.net/ ). Я'вэ "и портирована на" Lua в процессоре Cortex-м3 некоторое время назад. Из верхней части моей головы он имел размер вспышки 60~100кб и около 20 кб оперативной памяти для запуска. Я раздеться до голой основы, но в зависимости от вашего приложения, что может быть достаточно. Там'ы еще возможности для оптимизации, особенно о RAM требованиям, но я сомневаюсь, что вы можете запустить его удобным в 8кб.
РЕН соответствует вашим критериям -- по умолчанию он'ы настроены на использование всего 4К ОЗУ. Насколько мне известно, это не'т видел ни фактическому пользованию, поскольку парень, с которым я писал его для решил, что он не'т нужен переводчик полностью работает на целевой системе, в конце концов.
Язык-это влияние наиболее очевидно мл и далее.
Некоторые АВР переводчиков/ВМ:
Вы можете взглянуть на очень мощный AvrCo многозадачности Паскаль для AVR. Вы можете попробовать его на http://www.e-lab.de. MEGA8/88 версия бесплатно. Есть куча водителей и симулятор с JTAG отладчиком и приятно жить или смоделированные визуализации всех стандартных устройств (LCDCHAR, LCDGRAPH, 7SEG, 14SEG, LEDDOT, клавиатуры, проект RC5, сервопривода, шаговые...).
Рассматривали ли вы порт на C из [крошечный] основных2? Или, возможно, переписав Паскаля UCSD П-автомат для вашей архитектуры от Z-80?
А если серьезно, то JavaScript будет сделать хороший встроенный скриптовый язык, но я'вэ не догадывается, что минимальные требования к памяти для ВМ + ГК, как ни трудно удалить ОС зависимостей. Я играл с и njs некоторое время назад, которые могли бы соответствовать вашим потребностям. Этот интересен тем, что компилятор написан на JavaScript (сам хостинг).
Там's также с JavaScript, через Espruino.
Этот создан специально для микроконтроллеров и есть сборки для различных микросхем (в основном STM32s), которые соответствуют системы в качестве лишь 8 КБ ОЗУ.
Вы'вновь отсутствует EmbedVM, Домашняя страница здесь, СВН РЕПО здесь. Не забудьте проверить обе [1,2] видео на первой странице ;)
С главной страницы:
EmbedVM-это небольшой встраиваемый виртуальной машины для микроконтроллеров С C-подобный язык интерфейса. Она была протестирована с помощью GCC и AVR микроконтроллеры. Но как виртуальная машина, а просто должна быть легко портировать его на другие платформы.
виртуальная машина имитирует процессор 16 бит, которые могут получить доступ к 64 Кбайт памяти. Это может работать на 16-битных значений и массивов 16бит и значения 8 бит. нет поддержки сложных структур данных (структуры, объекты, и т. д.). Функция может иметь максимум 32 локальные переменные и 32 аргументы.
кроме памяти для виртуальной машины, небольшой холдинговой структуры ВМ государства > и разумный объем памяти, функции EmbedVM нужно на стека нет дополнительных требований к памяти для виртуальной машины. особенно VM не зависит от какого-либо управления памятью dymaic.
EmbedVM оптимизирован по размеру и простоте, а не скорость исполнения. В В самой виртуальной машине занимает порядка 3кб памяти программ на АВР По микроконтроллера. На ATmega168 с АВР работает на 16МГц VM может выполнять около 75 ВМ инструкции в миллисекунду.
все доступы к памяти осуществляется ВМ parformed с помощью обратного вызова пользователя функции. Так что можно иметь некоторые или все из памяти ВМ на внешние запоминающие устройства, флэш-память и т. д. или "память-карты" и оборудования функции виртуальной машины.
компилятор-это инструмент командной строки для Unix/Linux, которая читает *.ЕВМ файл и генерирует байт-кода в различных форматах (двоичный файл, Интел Хекс, в массив инициализаторы и специального отладочного вывода формат). Он также создает файл символ, который может использоваться для доступа к данным в виртуальной машине В памяти от ведущего приложения.
Си-подобного языка выглядит так: http://svn.clifford.at/embedvm/trunk/examples/numberquizz/vmcode.evm
Ни один из языков в списке в вопросе или в ответах оказались удовлетворительными по требованию супер простой компиляции и интеграции в существующий микроконтроллер проекта (раскрытие: я не'т на самом деле попробовать каждого из предложений).
Я нашел tinyscript, которая представляет собой один .с
+.ч
файл, который компилируется с остальной частью исходной файлы на мой проект с единственной дополнительной настройки, необходимые для предоставления пустота outchar(инт С), который может быть пустым, если вы не'т требует выхода из скриптов.
Для меня скорость выполнения гораздо менее важна, чем простота сборки и интеграции и взаимодействия с C, как в моем случае использовать в основном просто вызова определенных функций C в порядке.
Пролог - http://www.gprolog.org/
По данным поиска в Google, что "пролог маленький и" размер исполняемого файла может быть совсем небольшой, избегая связывания встроенных предикатов.
Я бы предложил использовать Python. Но сейчас проблема только в памяти верно? Поэтому у меня есть отличная идея для людей, которые могут быть застрял в этой задаче позже.
Первое, что's первый, писать интерпретатор БФ(или просто получить исходный код где-то). Переводчик будет очень маленьким. Также БФ это Тьюринг полный язык. Теперь вам нужно написать код на Python, а затем transpiler его на БФ через bfpy( https://github.com/felko/bfpy/blob/master/README.md ). Я'вэ дал вам решение с наименьшими накладными расходами и я уверен, что интерпретатор БФ будет легко находиться под 10КБ использования оперативной памяти.
Вы не думали просто использовать /bin/sh
, поставляемый busybox? Или один из меньших языков сценариев, которые они рекомендуют?
Я использовал в своей предыдущей работе busybox на BlackFin.
Мы компилировали perl + php для него, после изменения s/fork/vfork/g он работал довольно хорошо... более или менее. Отсутствие MMU - не лучшая идея. Фрагментация памяти убьет сервер довольно легко. Все, что я сделал, это:
for i in `seq 1 100`; do wget http://black-fin-ip/test.php; done
Он умер, пока я шел к своему боссу и говорил ему, что сервер умрет на производстве :)
Эрланг - http://erlang.org/
он может поместиться в 2Мб
http://www.experts123.com/q/is-erlang-small-enough-for-embedded-systems.html