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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: CREATE-WORD
СообщениеДобавлено: Пт окт 21, 2011 02:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
В качестве эксперимента, а также из-за того, что это удобнее делать в ядре, добавлено слово CREATE-WORD. Это альтернатива CREATE, только имя не выбирается из входного потока, а снимается со стека в виде указателя на ASCIIZ. Вот фрагментик:

Код:
CREATE WORDBUF 256 ALLOT

: instance
  INSTANCES TO ACTIVE-INSTANCE
  PARSE DUP WORDBUF SMOVE

  \ всякое оформление опущено, чтобы не засорять текст

  WORDBUF CREATE-WORD INSTANCES 1 - , DOES> @ TO ACTIVE-INSTANCE
;



Это библиотека высокоуровневого структурного описания схем. При вводе instance my_module1 словом PARSE съестся my_module1, и попадет в массив с именами модулей (попутно оставшись в массиве WORDBUF). Чуть позже из содержимого WORDBUF будет создано слово, которое при исполнении положит на стек индекс созданного модуля.
Похожего навскидку не нашлось.

P.S. Будет в Quark build 30, который сейчас в состоянии "еще небольшой список доделать".



За это сообщение автора Hishnik поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Пт окт 21, 2011 11:13 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Хищник писал(а):
В качестве эксперимента, а также из-за того, что это удобнее делать в ядре, добавлено слово CREATE-WORD.

В spf для этих целей можно использовать слово CREATED ( addr len -- ).

_________________
С уважением, chess



За это сообщение автора chess поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Пт окт 21, 2011 11:44 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
chess писал(а):
В spf для этих целей можно использовать слово CREATED ( addr len -- ).

Кстати, никогда мне такой синтаксис не нравился. Особенно это проявляется на INCLUDED. То есть я сообщаю, что файл уже загружен???? Вообще-то это команда на загрузку файла.



За это сообщение автора Hishnik поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Пт окт 21, 2011 13:32 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Хищник писал(а):
Кстати, никогда мне такой синтаксис не нравился. Особенно это проявляется на INCLUDED. То есть я сообщаю, что файл уже загружен???? Вообще-то это команда на загрузку файла.

По моему на букву D в конце подобных слов навесили намек на то, что эти слова параметризуются данными со стека, а на то, что
появляется несоответствие в действиях слов и их именах, махнули рукой.

_________________
С уважением, chess



За это сообщение автора chess поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Пт окт 21, 2011 14:01 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
chess писал(а):
По моему на букву D в конце подобных слов навесили намек на то, что эти слова параметризуются данными со стека, а на то, что
появляется несоответствие в действиях слов и их именах, махнули рукой.

Хороший синтаксис - не такая уж простая проблема.



За это сообщение автора Hishnik поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Пт окт 21, 2011 16:08 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Хищник писал(а):
Хороший синтаксис - не такая уж простая проблема.

В классическом форте, кроме как в представлении чисел, как такового синтаксиса-то и нет(пробелы да имена слов).
Имена словам - да, надо подбирать подходящие, но это практически невыполнимая задача, так как эти имена могут иметь широкий(многослойный) смысл. Особо тщательно их надо подбирать для слов ядра.
Синтаксис, он, в чем-то таком:
Код:
: sum-hlb ( N -- Nlb+Nhb ) \ сумма номеров старшего и младшего единичных битов ячейки
hb( A=H\A ) lb( A=L\A )
1|[hb]1[lb]+ ;

200000000 sum-hlb . ( 36 )

_________________
С уважением, chess



За это сообщение автора chess поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Пт окт 21, 2011 23:48 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
chess писал(а):
Синтаксис, он, в чем-то таком:

Код:
: sum-hlb ( N -- Nlb+Nhb ) \ сумма номеров старшего и младшего единичных битов ячейки
hb( A=H\A ) lb( A=L\A )
1|[hb]1[lb]+ ;

200000000 sum-hlb . ( 36 )


А мне кажется, в таком...

Код:
instance proc_core kf532

50000000 FCORE setparameter
16384 CODEMEMORYSIZE setparameter
1024 DATAMEMORYSIZE setparameter

proc-core signal rx external location L16

// ============ DCM ====================

instance generator dcm_sp6

signal clk_in external location L15

// ============= LEDS =====================

8 bit register leds
leds 1000 baseaddr
leds locations A1 A2 A3 A4 A5 B1 B3 D4



За это сообщение автора Hishnik поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Сб окт 22, 2011 15:08 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 660
Благодарил (а): 7 раз.
Поблагодарили: 25 раз.
Хищник писал(а):
А мне кажется, в таком...

Код:
instance proc_core kf532

50000000 FCORE setparameter
16384 CODEMEMORYSIZE setparameter
1024 DATAMEMORYSIZE setparameter

proc-core signal rx external location L16

// ============ DCM ====================

instance generator dcm_sp6

signal clk_in external location L15

// ============= LEDS =====================

8 bit register leds
leds 1000 baseaddr
leds locations A1 A2 A3 A4 A5 B1 B3 D4


:!: :!: :!: красиво.....



За это сообщение автора diver поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Ср окт 26, 2011 15:21 
Хищник писал(а):
В качестве эксперимента, а также из-за того, что это удобнее делать в ядре, добавлено слово CREATE-WORD. Это альтернатива CREATE, только имя не выбирается из входного потока, а снимается со стека в виде указателя на ASCIIZ

Я в каком то форте видел (CREATE) для такого.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Ср окт 26, 2011 15:54 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
white_TigR писал(а):
Я в каком то форте видел (CREATE) для такого.

Попытки подобрать подходящее имя слову по большому счету бессмысленны. Всякое такое имя отразит только часть семантики слова. Имена слов в Форте подобны иероглифам, их просто нужно запомнить в связке с семантикой.

_________________
С уважением, chess



За это сообщение автора chess поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: CREATE-WORD
СообщениеДобавлено: Ср окт 26, 2011 16:57 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
white_TigR писал(а):
Я в каком то форте видел (CREATE) для такого.

Кстати, это имеет смысл. Если рассматривать CREATE как слово, которое сначала получает строку с именем слова, а потом создает его, то можно написать что-то вроде
Код:
: CREATE PARSE (CREATE) ;

В скобках часто описывают "внутреннюю" реализацию слов управления.



За это сообщение автора Hishnik поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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