Forth http://www.fforum.winglion.ru/ |
|
CREATE-WORD http://www.fforum.winglion.ru/viewtopic.php?f=23&t=2770 |
Страница 1 из 1 |
Автор: | Hishnik [ Пт окт 21, 2011 02:27 ] |
Заголовок сообщения: | CREATE-WORD |
В качестве эксперимента, а также из-за того, что это удобнее делать в ядре, добавлено слово 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, который сейчас в состоянии "еще небольшой список доделать". |
Автор: | chess [ Пт окт 21, 2011 11:13 ] |
Заголовок сообщения: | Re: CREATE-WORD |
Хищник писал(а): В качестве эксперимента, а также из-за того, что это удобнее делать в ядре, добавлено слово CREATE-WORD. В spf для этих целей можно использовать слово CREATED ( addr len -- ). |
Автор: | Hishnik [ Пт окт 21, 2011 11:44 ] |
Заголовок сообщения: | Re: CREATE-WORD |
chess писал(а): В spf для этих целей можно использовать слово CREATED ( addr len -- ). Кстати, никогда мне такой синтаксис не нравился. Особенно это проявляется на INCLUDED. То есть я сообщаю, что файл уже загружен???? Вообще-то это команда на загрузку файла. |
Автор: | chess [ Пт окт 21, 2011 13:32 ] |
Заголовок сообщения: | Re: CREATE-WORD |
Хищник писал(а): Кстати, никогда мне такой синтаксис не нравился. Особенно это проявляется на INCLUDED. То есть я сообщаю, что файл уже загружен???? Вообще-то это команда на загрузку файла. По моему на букву D в конце подобных слов навесили намек на то, что эти слова параметризуются данными со стека, а на то, что появляется несоответствие в действиях слов и их именах, махнули рукой. |
Автор: | Hishnik [ Пт окт 21, 2011 14:01 ] |
Заголовок сообщения: | Re: CREATE-WORD |
chess писал(а): По моему на букву D в конце подобных слов навесили намек на то, что эти слова параметризуются данными со стека, а на то, что появляется несоответствие в действиях слов и их именах, махнули рукой. Хороший синтаксис - не такая уж простая проблема. |
Автор: | chess [ Пт окт 21, 2011 16:08 ] |
Заголовок сообщения: | Re: CREATE-WORD |
Хищник писал(а): Хороший синтаксис - не такая уж простая проблема. В классическом форте, кроме как в представлении чисел, как такового синтаксиса-то и нет(пробелы да имена слов). Имена словам - да, надо подбирать подходящие, но это практически невыполнимая задача, так как эти имена могут иметь широкий(многослойный) смысл. Особо тщательно их надо подбирать для слов ядра. Синтаксис, он, в чем-то таком: Код: : sum-hlb ( N -- Nlb+Nhb ) \ сумма номеров старшего и младшего единичных битов ячейки
hb( A=H\A ) lb( A=L\A ) 1|[hb]1[lb]+ ; 200000000 sum-hlb . ( 36 ) |
Автор: | Hishnik [ Пт окт 21, 2011 23:48 ] |
Заголовок сообщения: | Re: CREATE-WORD |
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 |
Автор: | diver [ Сб окт 22, 2011 15:08 ] |
Заголовок сообщения: | Re: CREATE-WORD |
Хищник писал(а): А мне кажется, в таком... Код: 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 красиво..... |
Автор: | white_TigR [ Ср окт 26, 2011 15:21 ] |
Заголовок сообщения: | Re: CREATE-WORD |
Хищник писал(а): В качестве эксперимента, а также из-за того, что это удобнее делать в ядре, добавлено слово CREATE-WORD. Это альтернатива CREATE, только имя не выбирается из входного потока, а снимается со стека в виде указателя на ASCIIZ Я в каком то форте видел (CREATE) для такого. |
Автор: | chess [ Ср окт 26, 2011 15:54 ] |
Заголовок сообщения: | Re: CREATE-WORD |
white_TigR писал(а): Я в каком то форте видел (CREATE) для такого. Попытки подобрать подходящее имя слову по большому счету бессмысленны. Всякое такое имя отразит только часть семантики слова. Имена слов в Форте подобны иероглифам, их просто нужно запомнить в связке с семантикой. |
Автор: | Hishnik [ Ср окт 26, 2011 16:57 ] |
Заголовок сообщения: | Re: CREATE-WORD |
white_TigR писал(а): Я в каком то форте видел (CREATE) для такого. Кстати, это имеет смысл. Если рассматривать CREATE как слово, которое сначала получает строку с именем слова, а потом создает его, то можно написать что-то вроде Код: : CREATE PARSE (CREATE) ; В скобках часто описывают "внутреннюю" реализацию слов управления. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |