Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт дек 01, 2020 16:22

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 158 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10, 11  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн сен 18, 2006 15:51 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
WingLion писал(а):
И зацепиться, чтобы понять, как правильно - незачто!

Если не за что - пиши по-старому.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн сен 18, 2006 16:27 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7077
Благодарил (а): 17 раз.
Поблагодарили: 116 раз.
chess писал(а):
По существу - сгодится. Однако есть недостаток - объем кода растет(хотя при этом растет быстродействие).


Ну а тут уж выше головы не прыгнуть. Всегда есть какой-то минимальный объем кода, без которого просто не получится.

chess писал(а):
Раньше последовательности DUP-ов SWAP-ов и т.п. были последовательностями ссылок(call) на подпрограммы, теперь это будут inline-вставки кода.

Кстати, инлайнинг можно сделать и в рамках обычной однопроходной компиляции. Например, завести соответствующи флажок для слова и вместо компиляции call на него вставлять непосредственно его тело. Такое я делал. Размер и быстродействие выигрывали.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Хищник писал(а):
Размер и быстродействие выигрывали.


Насчет быстродействия это верно, насчет размера - верно лишь в случае однократного применения процедуры, тело которой подставляем вместо call. Решением близким к оптимальному будет похоже
использование 2-х процедур(подпрограмм), 1-я - тащит параметр из стека в регистр(для нее
будет 2 параметра - номер ячейки в стеке и номер регистра), 2-я - тащит параметр из регистра в стек(для
нее тоже 2 тех же параметра). Тогда операция со стеком это цикл call(1-я) и цикл call(2-я) c соответствующей установкой указателя стека.

Остановлюсь пока на таком синтаксисе для операций манипуляции на стеке параметров.

1~11 \ dup
2~1212 \ 2dup
2~21 \ swap
1~ \ drop
2~ \ 2drop
2~121 \ over
3~231 \ rot
3~312 \ -rot
4~213 \ 2swap swap 2swap drop
и т.п.

цифра слева от ~ - число параметров на стеке, участвующих в операции, при этом параметр с максимальным номером лежит на вершине стека. Цифру слева от ~ можно трактовать как последнюю цифру
в записи состояния стека перед операцией(например 1234~2134 (2swap swap 2swap) запишется как 4~2134)

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


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

Зарегистрирован: Вс май 07, 2006 11:38
Сообщения: 279
Откуда: Slavyansk, Ukraine
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Тогда уж вместо тильды привычное (для стека) ">"
Т.е.,чтобы ничего не пропустить, заносим все-все-все варианты в таблицы:
2>11 2>12
2>21 2>22
и т.д.
Прописываем их на асме и забываем о SWAP'ах DUP'ах и ROT'ах Так?

_________________
Банзай!


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Kamikaze писал(а):
Прописываем их на асме и забываем о SWAP'ах DUP'ах и ROT'ах Так?

НЕ ТАК.
Никаких вариантов в таблицах.
Корректируем парсер и пишем процедуру для компиляции выражений n>...

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Об арифметических и логических операциях.
Например в SPF4:
D2/ D2* D= D0= 0<>
0= 0< U> U< D>
D< > < <> =
FM/MOD SM/REM RSHIFT LSHIFT
M* */MOD 2/ UM/MOD
UMOD /MOD MOD U/
/ UM* C>S U>D D>S
S>D ABS DNEGATE NEGATE
INVERT XOR OR AND *
- D- D+ +
2* 2- 2+ 1- 1+

Так как в Форте типы данных фактически есть - оставить только:
> < <> =
RSHIFT LSHIFT MOD /
ABS NEGATE INVERT XOR OR AND
* - +
ну может быть еще (чтобы не было unsigned-типов)
U> U< U<> U= UMOD U/ U*

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Forth и другие саморасширяющиеся системы программирования
- а нужно-то чтобы была и возможность корректного самосужения :D .

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт сен 19, 2006 16:00 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
WingLion писал(а):
самосужение - это команда FORGET...

А FORGET то в SPF и нет. :D

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт сен 19, 2006 16:30 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Может, его и в ANS-94 нет, а то я и не в курсе.
Зря выкинули, если нет. :(

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


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Код:
15.6.2.1580   FORGET    TOOLS EXT
....
Note: This word is obsolescent and is included as a concession to existing
implementations.


Взамен REQUIRE MARKER ~clf/marker.f

_________________
http://forth.org.ru/~ygrek


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
О текстах программ.
Человек часто идет от результата-цели, которого он хочет достигнуть к средствам и приемам, с помощью которых этот результат достигается.
Поэтому нужно допустить написание программ не только снизу-вверх, но и сверху вниз.

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Из слов ['] и ' оставить только ', но сделать его зависимым от state. Аналогично для Compile и [Compile].

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


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

Зарегистрирован: Чт май 04, 2006 22:43
Сообщения: 78
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
chess писал(а):
Из слов ['] и ' оставить только ', но сделать его зависимым от state. Аналогично для Compile и [Compile].

Было уже, в стандартах до 83. И читай Броуди, чем это плохо.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2129
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 40 раз.
Icefall писал(а):
Было уже, в стандартах до 83.

Что касается COMPILE и [COMPILE] так в ans94 это уже сделано - только там оно POSTPONE(наверно Броуди не читали :o ).

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


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

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


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

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


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

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