|
|
  |
А вот бы на FORTH написать..., ;-) |
|
|
|
Jun 15 2009, 08:03
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ Jun 15 2009, 09:35)  исходники spf, особенно compiler и asm. Возможно стоит посмотреть на решения использования Spf4 для разных контроллеров. на базисе spf Форт для MSP430 Цитата(MrYuran @ Jun 15 2009, 09:35)  Возможно, у меня пока каша в голове. Я пока представляю себе процесс следующим образом: 1. Делаю инлайн-(или кросс?)-ассемблер. 2. На основе него строю ядро таргет-системы. 3. На полученное ядро навешиваю остальное "мясо" В разработке выше примерно так и сделано, за исключением, что выходные бинарные коды формируются в файлы проекта для IAR ( что не обязательно ) В tinyboot для интеграции произвольного контроллера, в основном, необходимо создать три модуля - дизасемблер, билдер ( некоторые отличия по функциональности от ассемблера), и поддержку ядра. P.S. Использовать, в полной, степени исходники SPF4 для MSP430 не получится, но как вариант изучения возможной схемы можно. В этом плане можно порекомендовать посмотреть разработку forkа spf4 от mOleg fork spf4 Цитата(MrYuran @ Jun 15 2009, 08:41)  Полдня вчера исходники колупал, в некоторых местах понятно, некоторые - как китайская грамота... У Форта почти нет ограничивающих факторов для конструирования программ
Сообщение отредактировал Kopa - Jun 15 2009, 07:34
|
|
|
|
|
Jun 15 2009, 08:21
|

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

|
Цитата(Kopa @ Jun 15 2009, 10:07)  Возможно в Scite есть там специально добавляли поддержку Форт языка. ( узнать поподробнее можно на форуме поддержки разработки ) Посмотрел, замечательная вещь вместо вордпада, однако поддержка языков там на уровне подсветки синтаксиса, и форта нет (есть nnCron), но при желании легко добавить свою конфигурацию подсветки. Цитата MSP430 TARGET ! или MSP430 TO TARGET Да, точно. Цитата(Kopa @ Jun 15 2009, 12:03)  выходные бинарные коды формируются в файлы проекта для IAR ( что не обязательно ) Не только не обязательно, а категорически нежелательно. В крайнем случае под GCC Цитата(Kopa @ Jun 15 2009, 12:03)  У Форта почти нет ограничивающих факторов для конструирования программ  Вот это и привлекает, причём для построения своей системы или изменения существующей не обязательно перелопачивать горы талмудов типа гнушных мануалов (mspgcc собрать так и ниасилил, видать не дорос пока...)
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 15 2009, 10:20
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ Jun 15 2009, 12:39)  Только что вот наткнулся ещё на одну книжку (pdf) типа сборной солянки из многих источников. FORTH Spirit of Babylon, (С) RU FIG, Понятов Д.А. Раньше этот материал распологался здесь у Понятов Д.А. ( сейчас, похоже, url уже битый ) Цитата(MrYuran @ Jun 15 2009, 11:21)  (mspgcc собрать так и ниасилил, видать не дорос пока...) Можно собрать LCC для MSP с разным выходным кодом. Правда оптимизатор там слабый
Сообщение отредактировал Kopa - Jun 15 2009, 10:13
|
|
|
|
|
Jun 15 2009, 12:20
|

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

|
Цитата(Kopa @ Jun 15 2009, 12:03)  Возможно стоит посмотреть на решения использования Spf4 для разных контроллеров. на базисе spf Форт для MSP430 В разработке выше примерно так и сделано, за исключением, что выходные бинарные коды формируются в файлы проекта для IAR ( что не обязательно ) а, теперь до меня таки дошло, что там происходит! Осталось разобраться в механизмах... Опять же, очень не хватает "View Definition"... Насколько я понял, исходник, который компилируется, это ~mak/msp430/src.f Однако, не совсем понятно, что именно будет включено в конечный образ. CODE REQUIRE CASE-INS lib\ext\caseins.f
: MREAD-FILE READ-FILE ; : MC! C! ; : MC@ C@ ; : MW! W! ; : MW@ W@ ; : M! ! ; : M@ @ ; : M+ + ; : MNEGATE NEGATE ; : MOVER OVER ; : MAND AND ; : MCR CR ; : MEXECUTE EXECUTE ; : MVARIABLE VARIABLE ;
REQUIRE >NAME ~mak\LIB\fpc.f REQUIRE NUMBER? ~mak\LIB\fpcnum.f
TRUE VALUE QUICK : SL\ POSTPONE \ ; IMMEDIATE
[DEFINED] GUI-CONSOLE [IF] : FJB GUI-CONSOLE::FlushJetBuf ; [ELSE] : FJB ; [THEN]
REQUIRE TC_?LIMIT ~mak\LIB\THERE\STAT.f
MODULE: TC_M REQUIRE T_@ ~mak\LIB\THERE\mthere.f ;MODULE REQUIRE TH_H- ~mak\LIB\THERE\RECOM.F
\ REQUIRE CS-! ~mak\ext.f
REQUIRE ASMINF_MOD ~mak\MSP430\SRC\ASMMSP.f
~mak\MSP430\SRC\LEX.F ~mak\MSP430\SRC\prefix.f
\ EOF \ REQUIRE DISMSP ~mak\MSP430\SRC\DISMSP.f : M\ POSTPONE \ ; IMMEDIATE REQUIRE T-START ~mak\MSP430\SRC\tc.f
[IFNDEF] W>S : W>S ( w -- n ) \ Расширение знакового 16 разрядонго числа до 32 разрядного 0xFFFF AND \ удаляем грязь из старших разрядов 0x8000 XOR 0x8000 - ; [THEN]
: HH.+ DUP C@ 2 H.R 1+ ; : INST.+ HH.+ ." " ;
: MINST ( ADDR1 ADDR2 -- ADDR1 ADDR1 ) \ F7_ED DUP H. 9 EMIT 9 EMIT INST.+ BEGIN 2DUP U> WHILE \ DUP 7 AND 0= IF CR DUP H. 9 EMIT THEN INST.+ REPEAT ;
REQUIRE INCLUDED_AL ~mak\LIB\THERE\mlist.f \ DIS-OPT
0 VALUE ROM-HERE
0 VALUE FID
CREATE FTST 0x2000 ALLOT
CASE-INS ON
0x4000 TO CODE-SIZE
0xFC00 TO T-ORG \ Начальный целевой адрес области кода
T-ORG VALUE MT-ORG 0x5000 TO D-ORG \ Начальный целевой адрес области данных 0x5000 CONSTANT SP0@ \ дно стека данных 0x7F00 CONSTANT RP0@ \ дно стека возвратов \ CREATE CS-ORG 1 CS-CELLS ALLOT
T-ORG TO INCL-HH
' NOOP TO <PRE> [DEFINED] DBG_STOP [IF] DBG_STOP [THEN]
CR .( T-ORG=) T-ORG H.
\ S" devel\~mak\MSP430\BLOAD.F" INCLUDED \EOF
T-START
S" devel\~mak\MSP430\ROM.f" INCLUDED HERE TO ROM-HERE MCR .( ROM=) HERE T-ORG - . .( safasfs) S" F.C" CSAVE S" F.BIN" TSAVE S" F.HEX" T-SAVE \ T-ORG HERE OVER ALSO FORTH - PREVIOUS DISMSP
T-STOP
Ладно, пойду пока тренироваться на кошках (верблюдах  ) Там вроде всё прозрачно.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 16 2009, 03:27
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ Jun 15 2009, 15:20)  Насколько я понял, исходник, который компилируется, это ~mak/msp430/src.f Однако, не совсем понятно, что именно будет включено в конечный образ. Можно предположить, что содержимое файла rom.f c формированием выходных файлов *.f_al и они и используются при сборке в проекте IAR ещё далее формируются с, bin, hex файлы содержимое FORTH_IMG ( наверное пробный cм. в main если его подключить, то первые байты это код примитива DUP ) CODE ... T-START
S" devel\~mak\MSP430\ROM.f" INCLUDED ...
HERE TO ROM-HERE MCR .( ROM=) HERE T-ORG - . .( safasfs) S" F.C" CSAVE S" F.BIN" TSAVE S" F.HEX" T-SAVE \ T-ORG HERE OVER ALSO FORTH - PREVIOUS DISMSP
T-STOP
Цитата(MrYuran @ Jun 15 2009, 15:20)  Ладно, пойду пока тренироваться на кошках (верблюдах  ) Там вроде всё прозрачно. Удачи!. Цитата(MrYuran @ Jun 15 2009, 15:20)  Опять же, очень не хватает "View Definition"... Хорошо помогает Поиск по словам в Far:) Цитата(MrYuran @ Jun 15 2009, 15:20)  а, теперь до меня таки дошло, что там происходит! Осталось разобраться в механизмах... Да у Михаила свой, неповторимый, способ Форт программирования. Достаточно посмотреть на его макрооптимизатор в spf4
Сообщение отредактировал Kopa - Jun 16 2009, 04:04
|
|
|
|
|
Jun 16 2009, 08:15
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ Jun 16 2009, 10:50)  Сейчас ещё глянул SwiftX - вот практически эталон того, что мне нужно. Жаль, без исходников... Но кое-что можно почерпнуть. Вроде какая то версия для PC имеет исходники Цитата(MrYuran @ Jun 16 2009, 10:50)  Но кое-что можно почерпнуть. Можно при изучении брать материал из разных Форт систем  ( и не только комерческих ) Цитата(MrYuran @ Jun 16 2009, 10:50)  Например, отличный стиль, а также готовые файлы описания периферии (кстати, я имею право их использовать, сохранив копирайт?) Не знаю, но думаю не возбраняется
|
|
|
|
|
Jun 16 2009, 16:12
|
Группа: Новичок
Сообщений: 2
Регистрация: 14-05-09
Пользователь №: 49 087

|
Цитата(Kopa @ Jun 16 2009, 07:27)  Можно предположить, что содержимое файла rom.f c формированием выходных файлов *.f_al и они и используются при сборке в проекте IAR Так и есть. Цитата ещё далее формируются с, bin, hex файлы содержимое FORTH_IMG ( наверное пробный cм. в main если его подключить, то первые байты это код примитива DUP ) Командами сохранения загрузочного образа: S" F.C" CSAVE S" F.BIN" TSAVE S" F.HEX" T-SAVE Можно будет пользоваться если вся программа будет скомпилирована средствами Форта. В данном примере, часть программы компилируется средстваим IAR . Честно говоря, компиляция конечного модуля в взаимодействии с IAR не очень удобна. При изменении целевой программы в части форта ( devel\~mak\MSP430\rom.f ) требуется запустить TST.BAT затем компиляцию IAR и снова TST.BAT затем компиляцию IAR . Это чтобы правильно установились ссылки. Программа для прошивки данного примера является частью распределенной форт системы. Если контроллер с данной прошивкой подъкрючить к COM порту персоналки, то запустив TST.BAT можно взаимодействовать с удаленным контроллером в интерактивном режиме. Для примера можно запустить TEST.F затем TEST . Для генерации листинга: S" TEST.F" INCLUDED_AL Еще рекомендую комманду E> E> + E> MAIN E> TEST В редакторе, клавиша F11 - гипертекстовый вызов определения форт-слова. Клавиша F12 - вернутся обратно.
|
|
|
|
|
Jun 17 2009, 03:09
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ Jun 16 2009, 21:17)  Вот такой кусочек из asm.f Код ( DEFER SOME WORDS FOR EASE IN PORTING TO A CROSS ASSEMBLER ) DEFER CODE-C, ' C, IS CODE-C, ( X -- ) DEFER CODE-W, ' W, IS CODE-W, ( X -- ) ... Что такое DEFER и почему это облегчает портирование? DEFER ИМЯ создаёт векторное слово xt IS ИМЯ определяет его текущее наполнение простой вариант получения xt ' СЛОВО P.S. DEFER ( в spf4 VECT ) часто определяются для использования когда конкретное его наполнение еще не определено, но использование целесообразно. Например в tinyboot DEFER позволяет в процессе использования конкретного контроллера вынести вариантную часть во время настройки на работу с ним не пересобирая базовое ядро кросс системы. Вопросы?
Сообщение отредактировал Kopa - Jun 17 2009, 03:21
|
|
|
|
|
Jun 17 2009, 04:45
|

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

|
Цитата(Kopa @ Jun 17 2009, 07:09)  Вопросы? Вопросы появляются в процессе, а не при таких занятиях урывками, как у меня. Сегодня случайно занесло меня в англоязычную педию, разница ощутима. Наши хоть бы для начала английскую версию перевели... Очень развёрнутая статья про форт, оттуда попал на gforth - первое впечатление очень положительное. Особенно от документации. Сейчас докачаю исходники, буду смотреть. С GСС отношения более-менее сложились, по крайней мере легче будет оттолкнуться, чем от пустого места.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 17 2009, 06:02
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(MrYuran @ Jun 17 2009, 08:45)  Сегодня случайно занесло меня в англоязычную педию, разница ощутима. Наши хоть бы для начала английскую версию перевели... Что понравилось? Английская версия И в чём русская статья "проиграла"? Русская версия Цитата(MrYuran @ Jun 17 2009, 08:45)  Очень развёрнутая статья про форт, оттуда попал на gforth - первое впечатление очень положительное. Особенно от документации. Сейчас докачаю исходники, буду смотреть. На Си есть ещё много Форт реализаций  ( BigForth, kforth, ficl, pforth ... ) На асме, например, reva, retro. и ещё интересны разные подходы в других Форт системах  и близких разработок ( например давнишняя Timbre - из Форта делает Cи код для ускорения ) Цитата(MrYuran @ Jun 17 2009, 08:45)  С GСС отношения более-менее сложились, по крайней мере легче будет оттолкнуться, чем от пустого места. Возможно GCC уже оптимизирует Форт реализации? Было бы неплохо.
Сообщение отредактировал Kopa - Jun 17 2009, 06:05
|
|
|
|
|
Jun 17 2009, 06:28
|

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

|
Цитата(Kopa @ Jun 17 2009, 10:02)  Возможно GCC уже оптимизирует Форт реализации? Было бы неплохо. Система работает как компилятор: gforth *.fs [ключи] Ещё бросилась в глаза система автодокументирования по типу doxygen, через \G Код : save-input ( -- x1 .. xn n ) \ core-ext \G The @i{n} entries @i{xn - x1} describe the current state of the \G input source specification, in some platform-dependent way that can \G be used by @code{restore-input}. (save-input) current-input @ swap 1+; из си перекочевало include, хотя в форте это по-моему require с небольшими нюансами А, нет, нашёл. Код : include ( ... "file" -- ... ) \ gforth \G @code{include-file} the file @var{file}. name included;
: require ( ... "file" -- ... ) \ gforth \G @code{include-file} @var{file} only if it is not included already. name required; Всё-таки разные вещи.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 17 2009, 08:13
|

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

|
Насколько я понял из беглого диагонального прочтения доки, есть возможность включения форт-ядра в программы на си (например, в качестве скриптового движка), и есть возможность обращения к сишным функциям и библиотекам из форта. Использование ассемблера в тексте не приветствуется. В данный момент читаю про кросс-компиляцию (пока наиболее актуально для меня, уже хочется что-то склепать). Также упомянута тесная интеграция с emacs, включая возможность компиляции. Тоже интересно. Наконец-то скачал эти несчастные 6 метров (по 1к/с) Попробовал. Убойная штука see !!! "Скриншот" терминала: Код see code : code header here 8 + cfa, 0 init-asm; ok ok see : : : header (:noname); ok see 2DUP Code 2dup ( $402FE3 ) mov dword ptr 42A6F8 , ebx \ $89 $1D $F8 $A6 $42 $0 ( $402FE9 ) mov eax , dword ptr 4 [esi] \ $8B $46 $4 ( $402FEC ) mov edx , dword ptr [esi] \ $8B $16 ( $402FEE ) sub esi , # 8 \ $83 $EE $8 ( $402FF1 ) add ebx , # 4 \ $83 $C3 $4 ( $402FF4 ) mov dword ptr 4 [esi] , eax \ $89 $46 $4 ( $402FF7 ) mov dword ptr [esi] , edx \ $89 $16 ( $402FF9 ) mov edi , dword ptr FC [ebx] \ $8B $7B $FC ( $402FFC ) jmp 4014A4 \ $E9 $A3 $E4 $FF $FF end-code ok Получается встроенный дизассемблер-дисфорт! Ох...рененная штука!
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|