Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 23:16

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 23, 2009 15:00 
Не в сети

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
iv_ru писал(а):
т.е мусора в системе не остаётся? Я это имел в виду.

остается .
FORGET в современных системах не делают - отказались от него 8( но в общем зависит от системы
на смену ему в 94 стандарте есть слово MARKER (на мой взгляд очень неудобное) многие системы его поддерживают,
но смысл в обоих словах есть только на больших машинах, а на микроконтроллерах обычно стараются не переопределять слова.
вообще удаление слова из словаря возможно только, если его никто не использует, но даже в этом случае толку от
удаления слова из словаря будет мало(так как память распределяется по стековому принципу) - останется дырка в памяти, которую
использовать для чего-то полезного будет неудобно.

а для распечатки стека обычно в системе есть слово .S


Мне необходимо что-б я свои слова из системы мог удалить, не перезаливая всю эту систему заново :( (Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль :D )

.s печатает весь стек, что не всегда удобно...

Про marker сейчас посмотрим...


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

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
о-о-о в системе нет >mark и >resolve :dmad;


Код:
: >mark here compile compile exit ;
: >resolve here swap i! ;


Последний раз редактировалось iv_ru Вт июн 23, 2009 15:15, всего редактировалось 1 раз.

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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
iv_ru писал(а):
.s печатает весь стек, что не всегда удобно...

но зато можно глянуть, как он сделан в конкретной системе, и отображать меньшее кол-во элементов. Потому как перечисленные выше варианты выглядят грубовато :)

iv_ru писал(а):
Мне необходимо что-б я свои слова из системы мог удалить, не перезаливая всю эту систему заново (Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль )

надо смотреть, как устроен словарь в форт-системе (конкретной форт-системе)
и могут быть отличия для распределенной системы (где словарь может быть на host-e а код на микроконтроллере)

вобщем, в любом случае придется разбираться в том, как устроен словарь в конкретной системе, и как его можно корректно откатить...

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


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
iv_ru писал(а):
Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль :D )
...


т.е. роль интерфеса к существующей железячной плате и возможно ещё одной:)

P.S. Лучше о "головной боли" пользователя подумать заранее, чтобы не было
чего нехорошего.
>mark и >resolve - это немного не то. Ближе к этому процессу слова CONTEXT и CURRENT

но HERE конечно тоже необходимо восстановить.


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

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Kopa писал(а):
iv_ru писал(а):
Forth в ней будет в качестве вызываемого модуля в добавок к firmware, но это уже не моя головная боль :D )
...


т.е. роль интерфеса к существующей железячной плате и возможно ещё одной:)

P.S. Лучше о "головной боли" пользователя подумать заранее, чтобы не было
чего нехорошего.
>mark и >resolve - это немного не то. Ближе к этому процессу слова CONTEXT и CURRENT

но HERE конечно тоже необходимо восстановить.


На сколько я понял, то клиент получит файл с настройками, который надо будет передать форту, который сделает кое-какие манипуляции с железом, какие имменно не нужно знать клиенту, и другим тоже ( привет китайцам :)) ). Такая политика у шефа :-)


нет таких слов: CONTEXT и CURRENT, есть только эти:
http://amforth.sourceforge.net/words/


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
iv_ru писал(а):
нет таких слов: CONTEXT и CURRENT, есть только эти:
http://amforth.sourceforge.net/words/


Есть GET-CURRENT SET-CURRENT про другие не понятно,
и непривычно смотреть Форт текст в виде ссылок DW:)


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

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Kopa писал(а):
iv_ru писал(а):
нет таких слов: CONTEXT и CURRENT, есть только эти:
http://amforth.sourceforge.net/words/


Есть GET-CURRENT SET-CURRENT про другие не понятно,
и непривычно смотреть Форт текст в виде ссылок DW:)


Ну помоему, если я конечно всё правильно понял, то этими командами (GET-CURRENT SET-CURRENT) можно подключать/отключать словари, но при этом словари всегда находятся в системе.


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
iv_ru писал(а):
Kopa писал(а):
iv_ru писал(а):
нет таких слов: CONTEXT и CURRENT, есть только эти:
http://amforth.sourceforge.net/words/


Есть GET-CURRENT SET-CURRENT про другие не понятно,
и непривычно смотреть Форт текст в виде ссылок DW:)


Ну помоему, если я конечно всё правильно понял, то этими командами (GET-CURRENT SET-CURRENT) можно подключать/отключать словари, но при этом словари всегда находятся в системе.


Прежде всего, чтобы при реализации Forget ссылка на словарь не осталась в цепочке
последнего для добавления. ( например если мы затираем данные во Flash ) Можно организовать последним пользовательский словарь и его удалять из системы ( из процедуры поиска и скорректировав
HERE и при необходимости стереть ERASE область после HERE )
Слово ORDER показывает набор словарей для поиска ( CONTEXT ) и добавления ( CURRENT).


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

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
iv_ru писал(а):
Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...


Сначала посмотреть по этому вопросу книгу Баранова, а дальше отталкиваться
от реализации и возможности amForth попутно ознакамливаясь со стандартом
на Forth 94г.

P.S. или ждать пока кто нибудь из фортёров не скажет или предложит
реализацию как это сделать для amForth:)
Можно ещё завести переписку с автором по добавлению требуемой функциональности.
amForth Devel
ivan.rudenok задал вопрос про Forget ( Ваш? )
Ещё в forth.cz пользуются amForth ( добавили ассемблер и примеры с индикатором )
Утилита трансляции frt файлов frt -> asm AVRA
для amForth ( запускается с использованием gforth )

Пользователи amForth ( clustrМaps) c большим отрывом в Германии.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср июн 24, 2009 15:46 
Цитата:
Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...


если вводите несколько вариантов одного слова друг за другом можно как-то так делать:

Код:
VARIABLE LHERE
VARIABLE LCURR
: W[ HERE LHERE ! CURRENT @ @ LCURR ! ;
: ]W LHERE @ DP ! LCURR @ CURRENT @ ! ;

и пример использования
W[
: S DUP ;   1  S
: S DROP ;  2 3 S
]W
: S DUP SWAP ;   4 S
первые два варианта неудачные, а последний нормальный, например,
он только и попадет в словарь.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 25, 2009 08:26 
iv_ru писал(а):
Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...


MARKER работает как необходимо?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт июн 25, 2009 19:05 
Не в сети

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Anonymous писал(а):
iv_ru писал(а):
Ну так всё-же как мне это сделать-то? Я, чесно говоря, пока понятия не имею...


MARKER работает как необходимо?


Нет, не работает, да и слова такого нет, хотя по совету из Рассылки обновился до версии 3.4.
Там же в Рассылке посоветовали :
Код:
words
marker qux
words
qux
words

Блин, как всё просто-то... только слова этого "marker" нет...


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
iv_ru писал(а):
Блин, как всё просто-то... только слова этого "marker" нет...


Слово есть, но не в ядре и расположено lib\ans94\marker.frt
Определено так:
Код:
\ defines a word which resets the dictionary when called
\ better then forget but has still limitations


: marker ( c<chars> -- )
    get-order
    get-current dup e@
    here
    edp 
    heap
    \ maybe save turnkey as well
    create
    , , , , ,
    \ for save the search order wordlists
    dup ,
    0 ?do
   dup ,
   e@  ,
    loop
    does>
       dup i@ to heap
    1+ dup i@ to edp
    1+ dup i@ to here
    1+ dup i@ swap 1+ dup i@ swap >r
    swap over e! set-current
    r>
    1+ dup i@ \ # of entries in search order
       dup >r
       0 ?do
        1+ dup i@
   swap 1+ dup i@ over e!
       loop
    drop
    r> set-order
;


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

Зарегистрирован: Ср май 13, 2009 18:35
Сообщения: 35
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Kopa писал(а):
iv_ru писал(а):
Блин, как всё просто-то... только слова этого "marker" нет...


Слово есть, но не в ядре и расположено lib\ans94\marker.frt



Небольшой итог:

"FORGET" работает теперь так как я и предпологал: тихо-мирно и самое главное правильно.

Спасибо всем большое за помощь, особенно: Kopе

П.С. если кому интересно, то надо было в AVR Studio в файле "dict_minimum.inc" добавить .include "words/set-current.asm", потом определить слово как в amforth-3.4\lib\ans94\marker.frt
и всё.
тест:
Код:
marker startdict
: newWord 1ms ;
words
\ newWord определено и показывается
startdict
words
\нет такого слова: newWord

:D


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

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


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

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


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

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