Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 18:40

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Чт ноя 04, 2010 19:45 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вопрос писал(а):
Если мы захотим заинлайнить этот код?

заинлайнить что? в смысле какую часть кода?
Вообще-то, VALUE переменные по сути не являются переменными - это скорее объекты с тремя методами, за которыми может скрываться что угодно. Иными словами, имеется явный интерфейс, через который следует обращаться к ним.

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



За это сообщение автора mOleg поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Чт ноя 04, 2010 20:02 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
и вот куда попадут код и данные в случае инлайнироватния



За это сообщение автора вопрос поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Чт ноя 04, 2010 20:22 
Не в сети
Moderator
Moderator
Аватара пользователя

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

вот елки-палки-то!
есть интерфейс, где-то есть данные (форт таки не разлчает данные от кода, и, наоборот, код от данных!), ты обращаешься через интерфейс с помощью некоего запроса к именованному объекту, и получаешь что-то на стеке данных (а может и не стеке данных, а в другом месте) какой-то результат, причем сами данные могут находиться хоть на борту МКС. Все эти самые инлайны, да простит меня Михаил, - опасные трюки в Форте, которые приводят к непредсказуемым последствиям (ведь мы должны не забывать о возможностях самомодификации кода и прочая, прочая).
Еще раз, инлайнить тут просто нечего!
у тебя есть некая словарная статья, в начале (в поле кода) находится не одно, это самое, поле кода, а целых три:
метод извлечения данных
метод сохранения данных
метод определения расположения данных
(сами данные, либо информация, позволяющая получит их), то есть, примерно так: [read][write]['][reference]
это хорошо видно, если сравнить VALUE и USER-VALUE.
Еще для наглядности могу привести код, позволяющий работать через тот же интерфес со стеком.

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



За это сообщение автора mOleg поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Пт ноя 05, 2010 14:13 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
mOleg писал(а):
Еще раз, инлайнить тут просто нечего!
у тебя есть некая словарная статья, в начале (в поле кода) находится не одно, это самое, поле кода, а целых три:
метод извлечения данных
метод сохранения данных
метод определения расположения данных
(сами данные, либо информация, позволяющая получит их), то есть, примерно так: [read][write]['][reference]

Нуу это ж медленно! Чем длиннее конвееры, тем медленнее становится косвенный переход.



За это сообщение автора dynamic-wind поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Пт ноя 05, 2010 14:26 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
dynamic-wind писал(а):
Нуу это ж медленно! Чем длиннее конвееры, тем медленнее становится косвенный переход.

И что? не пользуйтесь VALUE, пользуйтесь VARIABLE 8)
У каждого решения есть свои достоинства и недостатки. Value - очень элегантный механизм.

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



За это сообщение автора mOleg поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Пт ноя 05, 2010 19:35 
dynamic-wind писал(а):
mOleg писал(а):
Еще раз, инлайнить тут просто нечего!
у тебя есть некая словарная статья, в начале (в поле кода) находится не одно, это самое, поле кода, а целых три:
метод извлечения данных
метод сохранения данных
метод определения расположения данных
(сами данные, либо информация, позволяющая получит их), то есть, примерно так: [read][write]['][reference]

Нуу это ж медленно! Чем длиннее конвееры, тем медленнее становится косвенный переход.

Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Пт ноя 05, 2010 20:40 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вообще слово: "инлайнить" - режет слух. Речь ведь идет об оптимизации кода. Оптимизировать же можно вызов, то есть вместо классического в косвенном шитом коде: [(TO)][(name)], где в [] находятся токены,
может присутствовать CALL (to name), что, собственно, и сделано в СПФ.

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



За это сообщение автора mOleg поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Сб ноя 06, 2010 01:12 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
ArtemKAD писал(а):
Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее...

Тоже верно! Так и не надо делать DTC, код ТО (там всего пара команд) надо подставлять по месту использования. И опять мы натыкаемся на старые ф-товские грабли: почему-то подставлять код считается неудобно, опасно, некошерно :(



За это сообщение автора dynamic-wind поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Сб ноя 06, 2010 12:46 
Не в сети

Зарегистрирован: Пт июн 06, 2008 14:21
Сообщения: 128
Откуда: Карелия
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Цитата:
Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее...


А все таки интересно. Может кто-то тестировал отделяя код от данных, на сколько медленее получается на современных процах?



За это сообщение автора F-MAP поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Сб ноя 06, 2010 12:53 
Не в сети

Зарегистрирован: Пт июн 06, 2008 14:21
Сообщения: 128
Откуда: Карелия
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Цитата:
на на сколько медленее получается на современных процах?
получается на современных процах?

Сразу попрвлюсь
Цитата:
на сколько быстрее получается на современных процах?




За это сообщение автора F-MAP поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Сб дек 18, 2010 19:06 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
F-MAP писал(а):
Нужна помощь! Понадобилось преписать код, обрабатывающий числа двойной длины, конкретно хотелось иметь аналог слова VALUE, как бы 2VALUE, работающее с числами двойной длины, посмотрел исходники, попытался сам написать, но видимо не силен в ассемблере:


~ygrek/lib/2value.f
~profit/misc/2value.f

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



За это сообщение автора ygrek поблагодарил: ctrl-C
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Чт мар 03, 2011 19:38 
Без 2TO можно обойтись, если ввести AT ,как в книге Баранова и
Ноздрунова. Тогда будет :
0 S>D 2VALUE COUNTER
COUNTER 1. D+ AT COUNTER 2! \ увеличение счетчика на один


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Чт мар 03, 2011 19:42 
Где
: AT ' >BODY STATE @ IF LIT, THEN ; IMMEDIATE


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: 2VALUE
СообщениеДобавлено: Вс окт 16, 2011 19:22 
chess писал(а):
Ради спортивного интереса переделал VALUE и 2VALUE под одно TO:
.....................
Этот момент можно обойти путем использования локальных переменых или локально-именованных глобальных переменных,
код которых удален от собственно данных на величину большую объема кэша процессора и использование которых не требует
чтения из входного потока.

ну или положить это в отдельный словарь и переключатся на него по необходимости.


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

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


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

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


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

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