Forth
http://www.fforum.winglion.ru/

Quark: Пример кода - LOOP
http://www.fforum.winglion.ru/viewtopic.php?f=23&t=2702
Страница 2 из 2

Автор:  ArtemKAD [ Вт янв 25, 2011 01:54 ]
Заголовок сообщения:  Re: Quark: Пример кода - LOOP

вопрос писал(а):
Я за осмысленную оптимизацию, за классику - mOleg - он не очень любит, когда "из форта делают не форт"

:)) Вы не за осмысленную оптимизацию, а за "улучшение компилятора". Си Вам покоя не дает...
Что касается "не Форт" - заглянем в стандарт. Хоть он только рекомендуемый, но...
Код:
6.1.1800   LOOP                                                            CORE
        Интерпретация: Семантика интерпретации для этого слова не определена.

        Компиляция: ( C: do-sys -- )
            Добавляет семантику времени-выполнения, данную ниже к текущему
            определению. Разрешает назначения для всех неразрешенных ссылок
            LEAVE между адресом ячейки определенным do-sys и следующим за LOOP
            адресом ячейки для передачи управления к выполнению слова после
            LOOP.

        Время-выполнения: ( -- )  ( R:  loop-sys1 --  | loop-sys2 )
            Неопределенная ситуация существует, если параметры управления цикла
            недоступны. Добавляет один к индексу цикла. Если после этого индекс
            цикла равен пределу цикла, снимает параметры цикла, и продолжает
            выполнение непосредственно после цикла. Иначе продолжает выполнение
            с начала цикла.

И где тут указано как написано LOOP ? Тут только указано как должно себя вести LOOP ...

Автор:  _Harry [ Вт янв 25, 2011 10:57 ]
Заголовок сообщения:  Re: Quark: Пример кода - LOOP

вопрос писал(а):
Я за осмысленную оптимизацию, за классику - mOleg - он не очень любит, когда "из форта делают не форт"
Пока нет ответа от mOleg подскажу что в форке много чего написано на асемблере, есть кое что и в машинных кодах. Так что ссылка на него не обоснована. Когда "из форта делают не форт" это несколько другое LOOP
от Хищника к этому случаю совсем не подходит.

Автор:  mOleg [ Вт янв 25, 2011 11:14 ]
Заголовок сообщения:  Re: Quark: Пример кода - LOOP

_Harry писал(а):
Пока нет ответа от mOleg

А тут и отвечать не на что.
Реализация системы - это интимное дело автора, уж тем более, если система с закрытым кодом. Важно, чтобы интерфейсы были совместимые.
Пример DO LOOP на форте писанный, скорее всего делался переносимым, то есть это как с eForth - минимум примитивов на асме, остальное на выскокуровнем Форте писано. Это тоже оптимизация, только в данном случае, скорости портирования системы.
что же касается <он не очень любит, когда "из форта делают не форт">, речь таки о другом 8) то есть когда некие синтаксические решения необоснованно тянут в Форт, не смотря на то, что они идеологически чужды Форту, то есть будут смотреться коряво, использоваться криво. Замечательно, что Форт позволяет такие вещи делать, но это совсем не значит, что их делать нужно.

Автор:  _Harry [ Вт янв 25, 2011 12:11 ]
Заголовок сообщения:  Re: Quark: Пример кода - LOOP

mOleg писал(а):
А тут и отвечать не на что.
Зато смотри как пишущих на форке боятся :D
А все почему потому что мы банда :))

Автор:  chess [ Чт янв 27, 2011 21:55 ]
Заголовок сообщения:  Re: Quark: Пример кода - LOOP

dynamic-wind писал(а):
В Катане есть стек.

То что там называется стек на самом деле лишь регистры для вершин локальных стеков объектов. Глобального стека данных там нет.
Но это не означает что на катане нельзя организовать форт-систему.
Только она будет непохожа на общеизвестные. Основной набор свойств форта сохранится.
Объекты с методами и сообщениями принципиально не отличаются от процедур над данными в памяти, а форт именно процедурный язык.

Автор:  Ethereal [ Ср мар 02, 2011 17:43 ]
Заголовок сообщения:  Re: Quark: Пример кода - LOOP

По моему, классикой (прямой или косвенный шитый код) будет вот это :
: LOOP COMPILE (LOOP) <RESOLVE >RESOLVE ; IMMEDIATE
плюс проверка на парность ?PAIRS внутри по вкусу,
а вот уже само run_time-слово (LOOP) должно быть определено на ассемблере.

FIG-Forth - это ли не классика и воплощение духа Forth ? Там было так :
: LOOP 3 ?PAIRS COMPILE (LOOP) BACK ; IMMEDIATE
и сама (LOOP) на ассемблере.

Страница 2 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/