Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб июн 23, 2018 06:04

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 87 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Полезные слова и идеи для Форта.
СообщениеДобавлено: Пн апр 23, 2007 07:02 
Не в сети
Moderator
Moderator

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

Предлагаю включить в расширение Форта слова неразрушающего контроля
стека ?IF ?WHILE ?UNTIL ( если еще это не сделали )

P.S. Возможно данное обсуждение лучше перенести в раздел конференций.


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
: ?IF POSTPONE DUP POSTPONE IF ; IMMEDIATE


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
Mihail писал(а):
: ?IF POSTPONE DUP POSTPONE IF ; IMMEDIATE

Ну тогда уж и:
: ?WHILE POSTPONE DUP POSTPONE WHILE ; IMMEDIATE
: ?UNTIL POSTPONE DUP POSTPONE UNTIL ; IMMEDIATE :)

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


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Предлагаю средство локальной борьбы с уменьшением
засилья в Форт текстах слов SWAP OVER ROT возможно DUP и т.д. используя генератор
стековых перестановок.

Можно ввести слово \\ после которого указывать именование стековых переменных
При первом его употреблении вводятся именованные стековые переменные
При последующем употреблении \\ служит для изменения порядка стековых переменных.
дальше в строке можно использовать только комментарий.

Пример:
Код:
              ...
              \\ a b с   \ первое декларирование именованных стековых переменных
              \\ а с b   \ при генерации будет вставлен SWAP в данном месте
              \\ c b a   \ при генерации будет вставлена команда ROT в программу
              \\ с b a b  \ будет сгенерирован OVER
             ...


P.S. Использование именованной 2-й стековой переменной по имени вместо OVER
даже не будет противоречить способу оперирования стеком.
Но все же нужно понимать разницу между стеком и массивом и осторожно применять
данный подход:)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 24, 2007 09:57 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Ср дек 06, 2006 09:23
Сообщения: 584
Благодарил (а): 6 раз.
Поблагодарили: 25 раз.
Mihail писал(а):
: ?IF POSTPONE DUP POSTPONE IF ; IMMEDIATE

chess писал(а):
Ну тогда уж и:
: ?WHILE POSTPONE DUP POSTPONE WHILE ; IMMEDIATE
: ?UNTIL POSTPONE DUP POSTPONE UNTIL ; IMMEDIATE

а смысл?, тогда уж реализовывать подобные слова на низком уровне


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
diver писал(а):
а смысл?, тогда уж реализовывать подобные слова на низком уровне

Если не использовать оптимизатор
Код:
>: ?IF POSTPONE DUP POSTPONE IF ; IMMEDIATE
Ok
>: ZZZ ?IF THEN ;
Ok
>SEE ZZZ

58B070 0BC0      OR      EAX , EAX
58B072 7400      JE      58B074
58B074 C3      RET     NEAR
END-CODE   Ok


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 24, 2007 10:47 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
diver писал(а):
а смысл?, тогда уж реализовывать подобные слова на низком уровне

При использовании оптимизатора никакого смысла реализовывать на низком уровне нет.

Код:
: ?UNTIL POSTPONE DUP POSTPONE UNTIL ; IMMEDIATE
: XXX BEGIN ?UNTIL ;
SEE XXX
CODE XXX
569430 0BC0             OR      EAX , EAX
569432 74FC             JE      569430
569434 C3               RET     NEAR
END-CODE

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 25, 2007 03:01 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Kopa писал(а):
Предлагаю включить в расширение Форта слова неразрушающего контроля
стека ?IF ?WHILE ?UNTIL ( если еще это не сделали )

только незачем придумывать новое, когда уже есть -IF -WHILE - у Мура


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср апр 25, 2007 04:00 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
mOleg писал(а):
только незачем придумывать новое, когда уже есть -IF -WHILE - у Мура

У Мура не совсем то...
У него все проверки были неразрушающими.
-if проверял флаг знака верхнего элемента стека
-while мне не попадался
-IF я видел как короткий синоним IFNOT

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 04, 2007 22:00 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
[quote="Kopa"]
Код:
              ...
              \\ a b с   \ первое декларирование именованных стековых переменных
              \\ а с b   \ при генерации будет вставлен SWAP в данном месте
              \\ c b a   \ при генерации будет вставлена команда ROT в программу
              \\ с b a b  \ будет сгенерирован OVER
             ...

А кто же это генерировать будет? Задача нетривиальная, нужен компилятор и оптимизатор.

По-моему, проще подключить локальные переменные и писать
с b a b напрямую.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Полезные слова и идеи для Форта.
СообщениеДобавлено: Пт май 04, 2007 22:02 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Kopa писал(а):
Предлагаю включить в расширение Форта слова неразрушающего контроля
стека ?IF ?WHILE ?UNTIL ( если еще это не сделали )

Этого не сделали, потому что ИЛИ все слова должны брать аргументы со стека, ИЛИ никто. В противном случае получится бедлам.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 05, 2007 09:43 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2107
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
yz писал(а):
Этого не сделали, потому что ИЛИ все слова должны брать аргументы со стека, ИЛИ никто. В противном случае получится бедлам.

Вывод ни из чего. Слова в форте друг с другом не связаны, одно может брать параметры со стека, другое может не брать. Можно представить даже слова, которые в определенной ситуации могут брать, а в другой определенной ситуации не брать.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 05, 2007 10:52 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Kopa писал(а):
локальной борьбы с уменьшением
засилья в Форт текстах слов SWAP OVER ROT возможно DUP и т.д. используя генератор


Сначала надо бы слово ВЕТРЯНАЯ-МЕЛЬНИЦА побороть :))

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 05, 2007 14:49 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
chess писал(а):
Слова в форте друг с другом не связаны

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


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

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
chess писал(а):
Можно представить даже слова, которые в определенной ситуации могут брать, а в другой определенной ситуации не брать.

Классики говорят, и я с ними согласен, что таких слов надо поменьше, а лучше, чтоб вообще не было! ;)

_________________
With best wishes, in4.


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

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


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

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


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

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