Forth http://fforum.winglion.ru/ |
|
FORTH в игре, или Red Power 2 Control для Minecraft. http://fforum.winglion.ru/viewtopic.php?f=33&t=2890 |
Страница 6 из 8 |
Автор: | Kopa [ Вс дек 16, 2012 02:29 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
ХитрыйЛис писал(а): UPD2: Прошу проверить этот диск. Попробую "потыкаться":) ХитрыйЛис писал(а): Вопрос: на какое поле ссылается LAST? Это из возможностей стандарта 83года? (точно не припомню сейчас) P.S. Что в дальнейших версиях будет? |
Автор: | ХитрыйЛис [ Вс дек 16, 2012 02:40 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
VoidVolker писал(а): Цитата: Слово: VOCAB Тип: V Синтаксис: ( -- addr ) Описание: Адрес последнего известного слова. Код: LAST @ Просто переменная VOCAB ссылается на исполняемую часть последнего слова. Мне нужно знать, прежде чем переименую... Наверное, ты это не увидел: Цитата: По ходу, LITERAL работает не так как надо. Приведите пример его использования. Kopa писал(а): P.S. Что в дальнейших версиях будет? Не знаю. Я пытаюсь ужать код везде где можно.Сейчас решил привести поближе к стандарту. Ну, кроме строк: везде будет только адрес начала и никаких счётчиков. |
Автор: | Kopa [ Вс дек 16, 2012 03:01 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
ХитрыйЛис писал(а): Наверное, ты это не увидел: По ходу, LITERAL работает не так как надо. Приведите пример его использования. Код: : aaa [ 2 3 + ] LITERAL . ; > aaa 5 По повду LAST наверное зависит от принятой модели реализации. Точно не подскажу. ХитрыйЛис писал(а): Я пытаюсь ужать код везде где можно. Может имена слов сделать в RADIX-50 кодировке? (должно дать "некоторый" резуьтат) ХитрыйЛис писал(а): Сейчас решил привести поближе к стандарту. Ну, кроме строк: везде будет только адрес начала и никаких счётчиков. Есть стандарт 83г, 94г, и кроме того в проекте 2ххх, а также некоторыми стандартами могут служить OpenBoot и др. Выбор "базы" не такой однозначный:) P.S. Можно также посмотреть на реализации Форт систем для контроллеров AVR PIC MSP430 и др. А слова / и MOD тоже необходимо менять местами! и отчасти можно "опираться" на "распространённые" Форт системы. Строки со счётчиком быстрее нуль-терминированных строк. Строки, кстати, тоже можно сжимать в RADIX-50 |
Автор: | ХитрыйЛис [ Вс дек 16, 2012 03:15 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
Цитата: LITERAL И вправду...Тут он используется так: Код: : aaa LITERAL @ . ; aaa <выведет адрес исполнения @> Kopa писал(а): Может имена слов сделать в RADIX-50 кодировке? Не получится - недостаточно символов. Kopa писал(а): Выбор "базы" не такой однозначный:) В общем, получается что-то между...Самое главное - убрать совсем непонятные моменты (вроде квадратных скобок). |
Автор: | Kopa [ Вс дек 16, 2012 03:23 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
ХитрыйЛис писал(а): Самое главное - убрать совсем непонятные моменты (вроде квадратных скобок). Квадратные скобки в каких то форт системах "убирают" или видоизменяют. Функция их, базовая, переключиться, в режим интерпритации при компилировании и обратно. Но могут быть системы и с начальным состоянием компиляции входных слов (но это уже нестандартно) P.S. в Factor языке квадратные скобки определяют блок исполняемого кода. В Форте есть ещё и фигурные скобки для обозначения локальных переменных:) ХитрыйЛис писал(а): : aaa LITERAL @ . ; aaa <выведет адрес исполнения @> Код: : aaa ['] @ . ; имена можно помечать остающимся битом/битами что они в RADIX-50 или обычной кодировке, но тут уже не всё так прозрачно. |
Автор: | ХитрыйЛис [ Вс дек 16, 2012 03:41 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
Если Вики не врёт, то строки на RADIX-50 не осуществить - мало символов. Kopa писал(а): Строки со счётчиком быстрее нуль-терминированных строк. Охотно верю, но не хочется переделывать...Пусть в "базе" будет указано, что строки как в Си. Наверное, стоит переименовать WORD, SPLIT, TIBWORD, TIBSPLIT. Но во что? И заодно: на что похоже SPLIT? |
Автор: | Kopa [ Вс дек 16, 2012 03:49 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
ХитрыйЛис писал(а): Наверное, стоит переименовать WORD, SPLIT, TIBWORD, TIBSPLIT. Но во что? И заодно: на что похоже SPLIT? Может рассмотреть приставки/суффиксы символы в слове < > -> и др. SPLIT нормальное слово но сильно общее:) Для деления строк /STRNG например P.S. WORD лучше оставить в его базовом понимании. P.S. А в реализации не используется байт-код? + добавить некоторые удобные общие слова : BOUNDS ( adr len -- adr_end adr_beg ) OVER + SWAP ; \ удобно для использовать перед циклом DO ... LOOP для формирования граничных значений чётчика цикла. |
Автор: | ХитрыйЛис [ Вс дек 16, 2012 04:08 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
Kopa писал(а): Может рассмотреть приставки/суффиксы символы в слове < > -> и др. Эээ... не понял...Kopa писал(а): SPLIT нормальное слово но сильно общее:) Хм, /STRING делает немного не то...Для деления строк /STRNG например Например для комментария: Код: : ( Возвращает из входного буфера строку до символа )29 TIBSPLIT DROP ; Сам SPLIT аналогичен, но возвращает 2 строки. Kopa писал(а): P.S. WORD лучше оставить в его базовом понимании. Т.е. очередное слово из входного потока?Kopa писал(а): P.S. А в реализации не используется байт-код? Реализации чего?
|
Автор: | Kopa [ Вс дек 16, 2012 04:19 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
ХитрыйЛис писал(а): Kopa писал(а): Может рассмотреть приставки/суффиксы символы в слове < > -> и др. Эээ... не понял...Например <<TIB ХитрыйЛис писал(а): Kopa писал(а): P.S. WORD лучше оставить в его базовом понимании. Т.е. очередное слово из входного потока?Да ХитрыйЛис писал(а): Kopa писал(а): P.S. А в реализации не используется байт-код? Реализации чего?Для обозначения базовых примитивов-слов системы одним байтом. ХитрыйЛис писал(а): : ( 29 TIBSPLIT DROP ; Почему не Код: : ( 29 TIBSCAN DROP ; P.S. Кстати, в nncron нуль-строки обозначены через Z" строка с нулём" |
Автор: | ХитрыйЛис [ Вс дек 16, 2012 04:41 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
Стандарт 94-го говорит про WORD так: ( char "<chars>ccc<char>" -- c-addr ) (начинаю запутываться, но держусь) Kopa писал(а): Для обозначения базовых примитивов-слов системы одним байтом. Что-то я туплю: слова знакомые, но смысл не доходит Kopa писал(а): Почему не Уже что-то полезное...Код: : ( 29 TIBSCAN DROP ; Ещё раз про эти четыре слова (в данной реализации): WORD ( str --> str1, str) Выделяет из строки первое слово (ограничивает его нулём). str1 указывает сразу после нуля. SPLIT ( char str --> str1, str) Выделяет подстроку, ограниченную char. Вместо этого символа вставляется ноль. str1 указывает сразу после нуля. TIBWORD ( --> str) Выделяет из входного буфера очередное слово. Положение оставшейся строки сохраняется в переменной TIBPTR TIBSPLIT ( char --> str) Выделяет из входного буфера подстроку, ограниченную char. Тоже с сохранением положения. |
Автор: | Kopa [ Вс дек 16, 2012 04:55 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
ХитрыйЛис писал(а): Стандарт 94-го говорит про WORD так: ( char "<chars>ccc<char>" -- c-addr ) (начинаю запутываться, но держусь) char параметр для слова "<chars>ccc<char>" ccc строка из входного потока с любым начальным количеством char и одним завершающим char возращает адрес строки со счётчиком. ХитрыйЛис писал(а): Kopa писал(а): Для обозначения базовых примитивов-слов системы одним байтом. Что-то я туплю: слова знакомые, но смысл не доходит Например: 0 - NOP 1 - DUP 2 - DROP 3 - SWAP ... 255 - а где размещен код данных процедур указан в таблице адресов на эти низкоуровневые слова ХитрыйЛис писал(а): WORD ( str --> str1, str) Выделяет из строки первое слово (ограничивает его нулём). str1 указывает сразу после нуля. Если правильно понял, то последовательность действий в стандартном форте выглядит так c учётом : BOUNDS OVER + SWAP ; BL WORD COUNT BOUNDS ( -- adr_end adr_begin ) \ но с убиранием ведущих пробелов BL - код пробела (32) P.S. Тогда может лучше для сохранения функционала авторского-слова WORD переименовать егo например в <WORD> или >WORD< вариант |
Автор: | ХитрыйЛис [ Вс дек 16, 2012 05:10 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
Kopa писал(а): "<chars>ccc<char>" Это я понял, просто до этого думал, что работает без параметра как TIBWORDВ этой реализации все слова идут связным списком. Хотя в моей реализации убраны заголовки у пары десятков низкоуровневых функций. Часть из них вызывается как обычные форт-слова, а часть - как ассемблерные подпрограммы (т.е. параметры передаются через регистры и в конце rts, а не nxt) |
Автор: | VoidVolker [ Вс дек 16, 2012 08:24 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
ХитрыйЛис писал(а): Просто переменная VOCAB ссылается на исполняемую часть последнего слова. В СПФ в ласт хранится ссылка на словарную статью. ХитрыйЛис писал(а): Самое главное - убрать совсем непонятные моменты (вроде квадратных скобок). Квадратные скобки как раз отвечают за одну из главных переменных в фоте - режим работы системы. Компиляция или интерпретация. Вообще, рекомендую заглянуть вот сюда: http://spf.cvs.sourceforge.net/viewvc/spf/src/compiler/ - там много интересного можно найти. И как я уже говорил, считаю что оптимальным решением будет максимизировать совместимость с СПФ, т.к. есть исходники и большое русскоязычное сообщество. Kopa писал(а): P.S. Кстати, в nncron нуль-строки обозначены через Z" строка с нулём" В спф они подключаются отдельно. Крон же на спф =) |
Автор: | WingLion [ Вс дек 16, 2012 09:19 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
LAST ссылается на то же поле в слове, на которое указывает поле связи и содержит этот адрес для последнего определенного слова, чтобы привязать к нему новое определение. Используется при определении нового слова, и в это же время модифицируется на значение, которое потребуется в следующем определении. Кроме того LAST используется как стартовый адрес для поиска слов в словаре |
Автор: | ХитрыйЛис [ Вс дек 16, 2012 14:27 ] |
Заголовок сообщения: | Re: FORTH в игре, или Red Power 2 Control для Minecraft. |
VoidVolker писал(а): как я уже говорил, считаю что оптимальным решением будет максимизировать совместимость с СПФ, т.к. есть исходники и большое русскоязычное сообщество. Вот теперь я в этом убедился...Буду делать по мере своих возможностей: разобраться с исходниками, изучить структуру СПФ и попытаться всё это засунуть в 65EL02... WingLion писал(а): LAST ссылается на то же поле в слове, на которое указывает поле связи Ясно, VOCAB можно смело переименовывать в LAST.
|
Страница 6 из 8 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |