реклама на сайте
подробности

 
 
16 страниц V  « < 7 8 9 10 11 > »   
Reply to this topicStart new topic
> А вот бы на FORTH написать..., ;-)
ukpyr
сообщение May 29 2009, 10:05
Сообщение #121


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
АЦП Запустить
BEGIN
Подождать
АЦП ?Готово
UNTIL
АЦП Считать
Температуру Вычислить

дык и в современных компиляторах С можно использовать Unicode - идентификаторы, нет ?

а по DSL - есть более продвинутые языки, основанные на Форте :
http://www.bluishcoder.co.nz/2008/04/factor-parsing-dsl.html
http://www.bluishcoder.co.nz/2008/06/parsi...ith-factor.html
Go to the top of the page
 
+Quote Post
Kopa
сообщение May 29 2009, 10:15
Сообщение #122


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(Rst7 @ May 29 2009, 14:01) *
Форт обладает хорошими возможностями для упрощения построения таких языков.
Хотя, я бы еще поспорил, где проще.


." Hello World "

Куда уж прощеsmile.gif
Или минимальный код выводящий себя в консоль на Форте

Код
  SOURCE TYPE


Цитата(Rst7 @ May 29 2009, 14:01) *
Вот, например, обожаемый в современном функциональном программировании Хаскель
...


Не менее любимая Scheme используется в проекте Staapl
для компилирования Форт программ для PIC18

Код
Staapl is a collection of abstractions for (meta)programming
microcontrollers from within PLT Scheme. The core of the system is a
programmable code generator structured around a functional
concatenative macro language. On top of this it includes a syntax
frontend for creating Forth-style languages, a backend code generator
for Microchip's PIC18 microcontroller architecture, and interaction
tools for shortening the edit-compile-test cycle.


P.S. Просто примеры. Получается сам Форт в этом случае DSL?smile.gif
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 29 2009, 10:26
Сообщение #123


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Куда уж проще


Не совсем понятно, к чему это. Я пример привел в том смысле, что реализация DSL на Хаскеле возможна вообще на этапе компиляции, не то что в рантайме (в рантайме любой лох при помощи yacc/lexx за три часа езыг сляпает smile.gif ). В примере в качестве DSL выступает Бейсик smile.gif

Цитата
Получается сам Форт в этом случае DSL?


Почему бы и нет.

Цитата
Предметно-ориентированный язык программирования (англ. domain-specific programming language, domain-specific language, DSL) — язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения...

В рамках Forth языка всегда существовала, но не всегда использовалась возможность создания DSL языков.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
Kopa
сообщение May 29 2009, 10:38
Сообщение #124


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(Rst7 @ May 29 2009, 14:26) *
Не совсем понятно, к чему это. Я пример привел в том смысле, что реализация DSL на Хаскеле возможна вообще на этапе компиляции, не то что в рантайме (


Наверное и я не понял.smile.gif
В Форте на этапе трансляции кода или после уже созданного exe
Можно подгружать необходимые DSL расширения.





Цитата(ukpyr @ May 29 2009, 14:05) *
а по DSL - есть более продвинутые языки, основанные на Форте :
http://www.bluishcoder.co.nz/2008/04/factor-parsing-dsl.html
http://www.bluishcoder.co.nz/2008/06/parsi...ith-factor.html


Если интересна тема BNF парсинга на Форте
одна из реализацийsmile.gif

P.S. Приводить ссылки в данном топике возможно мало смысла?
т.к. много ссылок по Форт тематике можно найти просматривая
Русский Форт Форум
Пока до понедельникаsmile.gif

Сообщение отредактировал Kopa - May 29 2009, 11:16
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 3 2009, 12:35
Сообщение #125


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Начал я таки колупать КэмелФорт.
Тяжело даётся асм изнеженному сями организму!
Попутно рождаются вопросы.

Например, как символически обозначить регистры, биты и прочие константы?
которые обычно назначаются дефайнами и подставляются препроцессором?

Думаю, константами назначить.

Эх, прям руки чешутся быстрее что-нибудь сварганить...
А у меня как назло все железки без иллюминации и спецэффектов, тупая измериловка.
Ну хоть через терминал пообщаться.



Ну чё, в первом приближении что-то заработало!
Прикрепленное изображение


Копаем дальше... smile3046.gif

Кстати, я передумал. Регистры, наверно, правильнее переменными задавать.
Щас подумаю ещё немного и попробую ногами помахать.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 4 2009, 03:29
Сообщение #126


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Jun 3 2009, 16:35) *
Ну хоть через терминал пообщаться.

Ну чё, в первом приближении что-то заработало!


Поздравляю с первыми результатами!

Цитата(MrYuran @ Jun 3 2009, 16:35) *
Копаем дальше... smile3046.gif

Кстати, я передумал. Регистры, наверно, правильнее переменными задавать.
Щас подумаю ещё немного и попробую ногами помахать.


В реализации Форта на родном трансляторе ассемблера есть некоторые
"несуразности" ( высокоуровневый код представлен через директивы данных
для формирования адресных ссылок )
Возможно придётся использовать небольшой генератор кода при этом.


Если есть в реализации поддержка режима самопрограммирования или
bootloader-а, то тоже неплохо.

P.S. Начал тоже небольшие раскопки "трупика" Форта для MSP:) ( Рассматриваю возможные варианты).
Да, для регистров это наверное правильно.

Сообщение отредактировал Kopa - Jun 4 2009, 03:32
Go to the top of the page
 
+Quote Post
chu
сообщение Jun 4 2009, 04:15
Сообщение #127


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



Цитата(MrYuran @ Jun 3 2009, 19:35) *
Ну чё, в первом приближении что-то заработало!


Поздравляю! Кстати, камень - MSP430F1611 ?
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 4 2009, 04:19
Сообщение #128


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Да, впечатлений на целый вечер хватило.
С помощью цепочки дупов, ротов и какой-то матери через час таки реализовал сишные конструкции
P1OUT |= mask;
и P1OUT &= ~mask;
и таки махнул ногой туда-обратно!

Но это, конечно, от незнания основ.
Например, дублирование пары аргументов на стеке наверно удобнее делать через стек возвратов, а не кручением-верчением, как я.

Ещё очень нужен инлайн-ассемблер.
Буду копать пока в этом направлении.
Книжку вот доделываю, черновой вариант почти готов (7 глав, осталось 8-ю и эпилог). Думаю, выложить лучше на ФТП. Правда, за инет надо сначала заплатить, всё не соберусь никак. А на работе сисадмин все "лишние" порты позакрывал.

Разобрался, как товарищ Джей Родригес предлагает проводить целевую компиляцию:
There are TWO WAYS to write programs in CamelForth:

Цитата
1. If you have CamelForth running on your MSP430 board, you can download Forth code directly to CamelForth. ...

Ну это понятно, как я вчера делал. В терминале набивал буковки, потом ждал "ок". По умолчанию компилирует в ОЗУ. Хорошо для тестирования, флешь зазря не трёт.

Цитата
2. You can add your code to the assembler source files. This requires you to convert your Forth code to assembler code. To show how this is done, every high-level Forth word in the file is shown with its equivalent Forth code in a comment. Be especially careful with control structures (IF..ELSE..THEN, BEGIN..UNTIL, DO..LOOP, and the like), and with the Forth word headers. For this option it is recommended that you create a new .s43 assembler file, and INCLUDE it at the end of core430.s43. This is necessary to preserve the dictionary linking between your new definitions and the kernel definitions. Reassemble core430.s43, and download to the MSP430 board, then test. This is a much slower process, and is best saved for the final stage when you have a tested & debugged program that you want to put in PROM.

А вот это поинтереснее. Предлагается переписать фортовый исходник в виде ассемблерных макросов (весьма близко к исходному тексту), а затем скомпилировать ИАРом. В этом случае наверняка и оптимизация выполняется, выкидываются неиспользованные слова.
Можно ещё подумать над тем, как выкидывать из конечной прошивки названия слов. (Если не предусматривается возможность интерактивной работы с конечным кодом)

Сегодня попробую замерить скорость "ногодрыгания" при использовании стандартных средств. Вообще, пока главное преимущество форта вижу в потенциальной возможности "впихать невпихуемое". (при правильном подходе wink.gif )

Цитата(chu @ Jun 4 2009, 08:15) *
Поздравляю! Кстати, камень - MSP430F1611 ?

Нет, 149.
Но это без разницы, ибо
Цитата
System Requirements
As distributed, CamelForth/430 will assemble to run on the New Micros Tini430 board, which uses the MSP430F1611 processor. It assumes an 8 MHz crystal for XT2, and USART0 at 9600 baud (8,N,1) for terminal I/O.

CamelForth should be usable with any MSP430 device having at least 512 bytes of RAM, 8K of ROM, and one USART.

CamelForth/430 is written to be assembled with the IAR Systems MSP430 Workbench "Kickstart", which can be downloaded from the TI web page.

Кварц у меня тоже не 8М, а 2.
Пришлось поменять коэффициент деления для контроллера флеши (кстати, неправильно, я его в 2 раза понизил, а надо в 4), и обмен вместо 9600 на 2400.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
chu
сообщение Jun 4 2009, 04:27
Сообщение #129


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



Цитата(MrYuran @ Jun 4 2009, 11:19) *
Да, впечатлений на целый вечер хватило.


Есть еще SwiftX MSP430 от Forth, inc. Весьма любопытная ( и удобная система ) Pro версия стоит $1095,
Evaluation - бесплатна, но ограничена по обьему кода, и не имеет исходников кросс-компилера...
Рекомендую ознакомиться. http://www.forth.com/embedded/index.html
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 4 2009, 06:18
Сообщение #130


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Jun 4 2009, 07:19) *
Да, впечатлений на целый вечер хватило.
С помощью цепочки дупов, ротов и какой-то матери через час таки реализовал сишные конструкции
P1OUT |= mask;
и P1OUT &= ~mask;
и таки махнул ногой туда-обратно!

Но это, конечно, от незнания основ.


Это могло выглядеть например так:
Код
mask P1OUT OR!
mask INVERT P1OUT AND!


или даже так как написано в Си кодеsmile.gif

Цитата(MrYuran @ Jun 4 2009, 07:19) *
Например, дублирование пары аргументов на стеке наверно удобнее делать через стек возвратов, а не кручением-верчением, как я.


Если необходимо продублировать 2-а верхних значения то слово 2DUP
Часто используемый приём в Форте перенос верхнего значения стека данных
на стек возвратов >R и использование через R@
а убирание для последнего использования R>

Если есть поддержка локальных переменных, то используется они при сложных случаях.

Цитата(MrYuran @ Jun 4 2009, 07:19) *
Ещё очень нужен инлайн-ассемблер.
Буду копать пока в этом направлении.


Да необходим, чтобы использовать максимально возможности контроллераsmile.gif


Цитата(MrYuran @ Jun 4 2009, 07:19) *
Книжку вот доделываю, черновой вариант почти готов (7 глав, осталось 8-ю и эпилог). Думаю, выложить лучше на ФТП. Правда, за инет надо сначала заплатить, всё не соберусь никак. А на работе сисадмин все "лишние" порты позакрывал.


А если выложить где и расположен исходный материал ( на sf )

Цитата(MrYuran @ Jun 4 2009, 07:19) *
Разобрался, как товарищ Джей Родригес предлагает проводить целевую компиляцию:
А вот это поинтереснее. Предлагается переписать фортовый исходник в виде ассемблерных макросов (весьма близко к исходному тексту), а затем скомпилировать ИАРом. В этом случае наверняка и оптимизация выполняется, выкидываются неиспользованные слова.


Наверное, но соптимизировать сам Форт код IAR, скорее всего, не сможет.
( если разработчикам IAR не подсказать, как их компилятор могут и используют для Форт программированияsmile.gif
в GCC, возможно есть изменения в этом направлении, т.к. gforth показывает неплохие результаты при
benchmark тестировании.)

Цитата(MrYuran @ Jun 4 2009, 07:19) *
Можно ещё подумать над тем, как выкидывать из конечной прошивки названия слов. (Если не предусматривается возможность интерактивной работы с конечным кодом)


В данном варианте, скорее всего, используя возможности макро языка ассемблера MSP.

Цитата(MrYuran @ Jun 4 2009, 07:19) *
Сегодня попробую замерить скорость "ногодрыгания" при использовании стандартных средств.


Скорее всего не так быстроsmile.gif, если в реализации нет, например, макро-оптимизатора.

Цитата(MrYuran @ Jun 4 2009, 07:19) *
Вообще, пока главное преимущество форта вижу в потенциальной возможности "впихать невпихуемое". (при правильном подходе wink.gif )


Действительно - это неплохо сформулировано в книге Ноздрунова,Баранова . smile3046.gif


Цитата(MrYuran @ Jun 4 2009, 07:19) *
и обмен вместо 9600 на 2400.


В tinyboot комфортная скорость терминального канала ~38400
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 4 2009, 06:42
Сообщение #131


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Kopa @ Jun 4 2009, 10:18) *
А если выложить где и расположен исходный материал ( на sf )

Да не, туда в таком виде как-то стрёмно...
Вот если бы также оформить, как там, тогда уж...
Но это в обозримом будущем вряд ли...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 4 2009, 07:25
Сообщение #132


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(chu @ Jun 4 2009, 07:27) *
Есть еще SwiftX MSP430 от Forth, inc. Весьма любопытная ( и удобная система ) Pro версия стоит $1095,
Evaluation - бесплатна, но ограничена по обьему кода, и не имеет исходников кросс-компилера...
Рекомендую ознакомиться. http://www.forth.com/embedded/index.html


Evaluation запускал, у SwiftX, в сравнении с VFX ( от MPE ) не такой хороший оптимизатор.
( если это критично )
стоимость VFX для MSP430 ( price list 384.65 / 777.15$ ) .

P.S. Но, как вариант, тоже можно рассматривать и использовать.smile.gif


Цитата(MrYuran @ Jun 4 2009, 09:42) *
Да не, туда в таком виде как-то стрёмно...
Вот если бы также оформить, как там, тогда уж...
Но это в обозримом будущем вряд ли...


Один из вариантов использовать ресурс хранения на forth.org.ru

P.S. Неполное дерево видовой эволюции Форт систем
Русского spf4 на этом дереве нетsmile.gif

Сообщение отредактировал Kopa - Jun 4 2009, 08:15
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 4 2009, 08:08
Сообщение #133


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Сейчас вот вырисовывается туманная перспектива колупания в ассемблерной прошивке старья на атмеловском AT89F8252...
cranky.gif
Если всё-таки придётся, (очень надеюсь, что нет) наверно попробую тинибут применить... Хотя бы в качестве макроассемблера


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 4 2009, 08:35
Сообщение #134


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Jun 4 2009, 11:08) *
Сейчас вот вырисовывается туманная перспектива колупания в ассемблерной прошивке старья на атмеловском AT89F8252...
cranky.gif
Если всё-таки придётся, (очень надеюсь, что нет) наверно попробую тинибут применить... Хотя бы в качестве макроассемблера


Для 51, кроме других, есть интересные варианты быстрого использования из недавних ( сделаны на spf4 )
1. исходный вариант
2. другое продолжение подхода выше
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 4 2009, 09:32
Сообщение #135


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

16 страниц V  « < 7 8 9 10 11 > » 
Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01516 секунд с 7
ELECTRONIX ©2004-2016