roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 19:45

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 00:36 
Не в сети
Аватара пользователя

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

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 02:02 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 02:34 
Не в сети
Site Admin
Аватара пользователя

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

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 03:14 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 03:27 
Не в сети
Аватара пользователя

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 07:44 
Не в сети
Аватара пользователя

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

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 13:35 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну вот вы представьте ваш "интерпретатор" встретил конструкцию
"a = my_functinon(b,c);"

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

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

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

Поэтому я и пишу, что байт-код - это удобный компромисс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 13:42 
Не в сети
Аватара пользователя

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

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 05 апр 2010, 13:59 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
galex1981 писал(а):
А если вариант загружать программу во внешнюю ОП...

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

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

Ну можно что-то из этих вариантов намешать-скрестить и намутировать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Интерпретатор исходного кода для AVR
СообщениеДобавлено: 06 апр 2010, 11:22 
Не в сети

Зарегистрирован: 27 авг 2008, 10:45
Сообщения: 1981
Откуда: Харьков
прог. языки: С/С++
На арм надо переходить, он фон-неймановский, а не гарвардский как AVR :)

Ну а еще вот жаба какая-то есть: http://www.harbaum.org/till/nanovm/index.shtml


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO