Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт окт 17, 2017 18:57

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Вт янв 25, 2011 01:54 
Не в сети

Зарегистрирован: Пт май 12, 2006 23:42
Сообщения: 300
Откуда: Kиев
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
вопрос писал(а):
Я за осмысленную оптимизацию, за классику - mOleg - он не очень любит, когда "из форта делают не форт"

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

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

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Вт янв 25, 2011 10:57 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
вопрос писал(а):
Я за осмысленную оптимизацию, за классику - mOleg - он не очень любит, когда "из форта делают не форт"
Пока нет ответа от mOleg подскажу что в форке много чего написано на асемблере, есть кое что и в машинных кодах. Так что ссылка на него не обоснована. Когда "из форта делают не форт" это несколько другое LOOP
от Хищника к этому случаю совсем не подходит.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Вт янв 25, 2011 11:14 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4830
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 52 раз.
_Harry писал(а):
Пока нет ответа от mOleg

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Вт янв 25, 2011 12:11 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 407
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.
mOleg писал(а):
А тут и отвечать не на что.
Зато смотри как пишущих на форке боятся :D
А все почему потому что мы банда :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Чт янв 27, 2011 21:55 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2093
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 34 раз.
dynamic-wind писал(а):
В Катане есть стек.

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Quark: Пример кода - LOOP
СообщениеДобавлено: Ср мар 02, 2011 17:43 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 480
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
По моему, классикой (прямой или косвенный шитый код) будет вот это :
: LOOP COMPILE (LOOP) <RESOLVE >RESOLVE ; IMMEDIATE
плюс проверка на парность ?PAIRS внутри по вкусу,
а вот уже само run_time-слово (LOOP) должно быть определено на ассемблере.

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


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

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


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

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


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

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