roboforum.ru

Технический форум по робототехнике.

Интерпретатор исходного кода для AVR

СРУВЧ!

Интерпретатор исходного кода для AVR

Сообщение galex1981 » 05 апр 2010, 00:36

Возникла идея реализовать интерпретатор исходного кода для МК AVR. Поясняю: для того чтобы МК AVR выполняли программу которая может занимать много больше чем вмещает в свою flash память МК, есть идея реализовать чтение файлов-исходников (написанных на Ассемблере, Бейсике или C - пока не решил на каком языке) располагающихся на Sd-карте и интерпретация команд с этого файла МК. Хотелось бы услышать мнения по этому поводу
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Интерпретатор исходного кода для AVR

Сообщение Angel71 » 05 апр 2010, 02:02

может есть смысл взять иксмегу или что-то на подобии 128/256й меги? :oops: или нужен именно интерпретатор? интерпретаторы в природе какие-то уже есть, может и писать ничего не прийдётся
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Интерпретатор исходного кода для AVR

Сообщение Vooon » 05 апр 2010, 02:34

eLua?
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Интерпретатор исходного кода для AVR

Сообщение AndreiSk » 05 апр 2010, 03:14

pico C?
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Интерпретатор исходного кода для AVR

Сообщение Michael_K » 05 апр 2010, 03:27

Лучше всего для интерпретации ИЗ ИСХОДНИКОВ подойдет форт.
Ну, бейсик, с некторыми натяжками - еще куда ни шло.
Си-интерпретатор исходников вещь вообще темная
- все упрется в то, насколько вы хотите урезать Си.

Я бы посоветовал создавать интерпретатор байт-кода
(это гораааааздо проще - за недельку, думаю, можно написать вполне, если не сильно усложнять)
но, правда возникнет необходимость найти (или написать?) подходящий к нему компилятор.
Производительность при выполнении из встроенного ОЗУ упадет "всего" раз в десять
(если без наворотов).

С внешней последовательной флэшкой/карточкой и интерпретатором "из исходника"
вы производительность проца убьете не просто в ноль, а в глубокий минус :wink:

Можно, конечно, еще выдумывать JIT-компиляторы, но боюсь, это уже малореальные фантазии.
Просто из-за объема работ и ограничений проца.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Интерпретатор исходного кода для AVR

Сообщение galex1981 » 05 апр 2010, 07:44

Согласен в том, что скорость выполнения программы будет небольшая, я расчитывал на то, что код, выполняемый МК будет большой
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Интерпретатор исходного кода для AVR

Сообщение Michael_K » 05 апр 2010, 13:35

Ну вот вы представьте ваш "интерпретатор" встретил конструкцию
"a = my_functinon(b,c);"

В "чистом" интерпретаторе ему придется прошаривать весь исходный код с поиском подстрок в поисках функции my_function и ее объявления (чтобы узнать в какой тип преобразовать переменные b и с) вместе с разбором дефайнов, инклюдов и (не дай бог конечно) библиотек. И так на каждую строчку - там AVR-ка подохнет строки молотить и буферизировать.

Можно сначала, конечно, прошарить весь код и составить таблицу типа коффа, но это уже достаточно серьезные элементы JIT-компилятора и если программа действительно большая, то не факт, что такие таблицы будут помещаться в память.

Тогда уж проще целиком JIT-компилятор писать. Отдельная тема - безопасная обработка ошибок в интерпретаторе
(он же заранее кагбе не может знать, есть там синтаксические ошибки или нет), сборщик мусора и т.д.

Поэтому я и пишу, что байт-код - это удобный компромисс.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Интерпретатор исходного кода для AVR

Сообщение galex1981 » 05 апр 2010, 13:42

А если вариант загружать программу во внешнюю ОП а затем МК исполнять ее оттуда будет (конечно МК будет скорее всего что то из Мега128)...
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4362
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Интерпретатор исходного кода для AVR

Сообщение Michael_K » 05 апр 2010, 13:59

galex1981 писал(а):А если вариант загружать программу во внешнюю ОП...

А зачем? Если программа в исходнике полезет в 64К, то скомпилированная явно и "со свистом"
поместится в 256к (мега2560, например).

Дело же не в том внешнее у вас озу или внутреннее, дело в принципе
Варианты:
- Ужасно тормозить, прошаривая весь исходник в поисках каждой переменной и функции, и не зная ничего о синтаксических ошибках, которые программист ему подложил.
- Страшно напрягшись, сделать встроенный JIT-компилятор, который сначала прошарит исходник пару раз, найдет ошибки, скомпилирует в свой промежуточный код, куда-то его положит и уже его будет интерпретировать.
- Чуть менее напрягшись, сделать внешний компилятор в байт-код, который (байт-код, а не компилятор) занимает мало места и удобно интерпретируется.

Ну можно что-то из этих вариантов намешать-скрестить и намутировать...
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Интерпретатор исходного кода для AVR

Сообщение boez » 06 апр 2010, 11:22

На арм надо переходить, он фон-неймановский, а не гарвардский как AVR :)

Ну а еще вот жаба какая-то есть: http://www.harbaum.org/till/nanovm/index.shtml
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++


Вернуться в CRAZY PROJECTs

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron