Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс янв 21, 2018 06:58

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 09, 2009 10:44 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
В настоящий момент пробую FVM Factory
http://c-fvm.sourceforge.net/

Кросс-компилятор из форта в си.
Идея интересная, правда метод реализации форт-машины несколько не устраивает.
Но начать очень просто.
Сначала задаём в специальном файле имена примитивов (если не хватает имеющихся), затем специальный парсер формирует заготовки си-файлов, в которых описываем эти примитивы на си.
Далее подключаем высокоуровневые описания на форте, сохраняем и получаем исходники для сишного компилятора.
Всё.
Вот эта идея мне лично очень нравится, только байт-код лучше бы заменить на прямую или косвенную адресацию


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 09, 2009 11:41 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Кстати, нашёл там глюк.
при сохранении кода из консоли (FVM_console.exe) вываливалась ошибка записи файла.
Устранил, могу сказать как.
Сформировал байт-код программы begin 1 until :D
Вот что получил...
Цитата:
/* FVM Factory */
/* Bytecodes compiled by FVM_console */
uchar FVM_code[] = {
76, 0, 3, 2, 74, 253, 255 };


Всё-таки, по мне так лучше бы вместо байт-кода были указатели на примитивы, типа
Цитата:
uchar FVM_code[] = {
&begin, &lit_1, &until };

ну или что-то в этом роде...
будем копать...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 09, 2009 11:46 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
MrYuran писал(а):
байт-код лучше бы заменить на прямую или косвенную адресацию

Не адресацию, а тип шитого кода. Только зачем?
Программа может просто представлять последовательность сишных процедур.
С начала, программу компилит Форт обычным образом в свой шитый код.
Получение сишного кода производится своего рода дизфортом,
который просто добавит к каждому слову суфикс '();'


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 09, 2009 12:08 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
У меня просто мысля, как бы отделить "мясо" от "костей", то есть ВМ от собственно программы
(В данном варианте они сплетены в неразъёмный клубок)
Тогда можно будет оперативно подгружать куски программы, а не перешивать целиком.
Это критично, когда канал 1200 и полная прошивка весит 30-40кБ


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 10, 2009 11:20 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
MrYuran писал(а):
отделить "мясо" от "костей", то есть ВМ от собственно программы
(В данном варианте они сплетены в неразъёмный клубок)
Тогда можно будет оперативно подгружать куски программы, а не перешивать целиком.


Сишную програму (в том числе конвертированную из форта) можно офоримть в
виде примитива для ВМ.
В любом случае, сперва следует скомпилить форт- программу обычным образом.
А уже за тем, полученный шитый код, представить в виде для восприятия другим транслятором.
(хоть над ВМ хоть под ней)

В качестве ВФМ рекомендую http://ag.da.ru/~kvt/relf-0.2.zip


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 10, 2009 14:10 
Не в сети
Аватара пользователя

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 212
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
diver писал(а):
Со SwiftX-ом проблема объема кода в демо версии решаема


Поделитесь солюшеном, если не затруднит.
Спасибо.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 10, 2009 14:49 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Mihail писал(а):
В качестве ВФМ рекомендую http://ag.da.ru/~kvt/relf-0.2.zip

Глянул.
Как всегда, "программа отлично документирована на языке си [форт]"
Для особо доходчивых, типа меня, нужна пошаговая инструкция.
в общем, насколько я понял, relf - среда исполнения.
Для каждой платформы своя.
В данном случае она 32-битная. Для MSP430 это перебор.
Если я изменяю всё на 16 разрядов, то нужно скомпилировать его заново для хоста и таргета. Так?
А затем запускаем на хосте, грузим в него всё что нужно, компилируем и получаем ...
Стоп, а что ему в этом случае задавать в качестве исходного образа (kernel.img)?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 10, 2009 19:10 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
MrYuran писал(а):
нужна пошаговая инструкция.

Это не то:
To compile kernel with RelF you need to do the following:
a) start RelF with initial kernel: ./relf kernel.img
b) load extensions: S" extend.4" INCLUDED
c) load cross-compiler: S" cross.4" INCLUDED

MrYuran писал(а):
Если я изменяю всё на 16 разрядов, то нужно скомпилировать его заново для хоста и таргета. Так?

Для таргета. Что собой предтавляет хост (удаленный терминал) это другой вопрс.
Можно использовать стндартный Hyper Terminal.
Я использую заспределенную форт-систему, с доступам к ральному контроллеру.
Я задумал сделать к relf - машине. Сделаю выложу.

MrYuran писал(а):
что ему в этом случае задавать в качестве исходного образа (kernel.img


Массив данных. Можно в виде иходника на Си
типа:
Код:
uchar FVM_code[] = {76, 0, 3, 2, 74, 253, 255 
...
  };

uchar *  base =  FVM_code;  // load_image не нужен


Можно загрузить по com-порту (по любому средству связи).


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 11, 2009 10:30 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
То есть конечную прошивку компилирует всё-таки таргет?
Или я опять всё попутал?
В выходные попробую поконкретнее разглядеть.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 16, 2009 17:22 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Наконец-то нашёл, что мне надо!
fminus.sourceforge.net
Кросс-компилятор с любого языка (даже придуманного) в си-виртуальную машину плюс байт-код.
Главное, с документацией.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 21, 2009 16:42 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Сделал выложил: http://www.easy-share.com/1908788513/spfrelf.rar

Распределенная форт-система на базе relf.
Проверял с ARM контроллером. Сишную часть компилил с помощию IAR.
Однако, для перехода на другую платформу достаточно заменить
ввод/вывод со стороны Си (RS232). Ну и сам сишный проект.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 21, 2009 22:11 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
что за лабиринт там приходится рисовать?
easy-share.com/1908788513/spfrelf.rar


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 23, 2009 14:49 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
А у меня админ залочил всё что можно... :cry:
А дома - 2 месяца инет не плочен, до кассы дойти некогда...
В общем, попробовал пока F-, мозга и документации хватило, чтобы сгенерить си-ВМ, правда, из готового примера, но уже под МСП.
Осталось залить и попробовать.
Если получится, по результатам буду статью сочинять, чтобы подытожить несколько тем здесь и в других местах.

Кстати, кросс-компилятор работаел из-под gForth, а в SPF отказался.
Пишет, типа:
Код:
SP-FORTH - ANS FORTH 94 for Win95/98/Me/NT/2k/XP/Vista
Open source project at http://spf.sf.net
Russian FIG at http://www.forth.org.ru ; Started by A.Cherezov
Version 4.20 Build 001 at 21.Jan.2009

include make.fb
include make.fb
      ^ -2003 WORD OR FILE NOT FOUND

make.fb
Exception #-2003 at: make.fb:3:14:
2048 constant RAMsize          \ maximum allowable RAM size (bytes)
            ^ -2003 WORD OR FILE NOT FOUND

Бред какой-то...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 23, 2009 15:49 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4840
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 52 раз.
MrYuran писал(а):
Бред какой-то...

СПФ регистро-чувствительный, поэтому CONSTANT и constant это разные лексемы.
может помочь все в верхний регистр привести, либо включить либу в СПФе для регистронезависимости.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 23, 2009 19:01 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
mOleg писал(а):
либо включить либу в СПФе для регистронезависимости

Не сначало почитать хотя бы документацию по СПФ-у
А то сразу ругаются.... :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB