Forth http://fforum.winglion.ru/ |
|
2VALUE http://fforum.winglion.ru/viewtopic.php?f=18&t=2677 |
Страница 2 из 2 |
Автор: | mOleg [ Чт ноя 04, 2010 19:45 ] |
Заголовок сообщения: | Re: 2VALUE |
вопрос писал(а): Если мы захотим заинлайнить этот код? заинлайнить что? в смысле какую часть кода? Вообще-то, VALUE переменные по сути не являются переменными - это скорее объекты с тремя методами, за которыми может скрываться что угодно. Иными словами, имеется явный интерфейс, через который следует обращаться к ним. |
Автор: | вопрос [ Чт ноя 04, 2010 20:02 ] |
Заголовок сообщения: | Re: 2VALUE |
и вот куда попадут код и данные в случае инлайнироватния |
Автор: | mOleg [ Чт ноя 04, 2010 20:22 ] |
Заголовок сообщения: | Re: 2VALUE |
вопрос писал(а): и вот куда попадут код и данные в случае инлайнироватния вот елки-палки-то! есть интерфейс, где-то есть данные (форт таки не разлчает данные от кода, и, наоборот, код от данных!), ты обращаешься через интерфейс с помощью некоего запроса к именованному объекту, и получаешь что-то на стеке данных (а может и не стеке данных, а в другом месте) какой-то результат, причем сами данные могут находиться хоть на борту МКС. Все эти самые инлайны, да простит меня Михаил, - опасные трюки в Форте, которые приводят к непредсказуемым последствиям (ведь мы должны не забывать о возможностях самомодификации кода и прочая, прочая). Еще раз, инлайнить тут просто нечего! у тебя есть некая словарная статья, в начале (в поле кода) находится не одно, это самое, поле кода, а целых три: метод извлечения данных метод сохранения данных метод определения расположения данных (сами данные, либо информация, позволяющая получит их), то есть, примерно так: [read][write]['][reference] это хорошо видно, если сравнить VALUE и USER-VALUE. Еще для наглядности могу привести код, позволяющий работать через тот же интерфес со стеком. |
Автор: | dynamic-wind [ Пт ноя 05, 2010 14:13 ] |
Заголовок сообщения: | Re: 2VALUE |
mOleg писал(а): Еще раз, инлайнить тут просто нечего! у тебя есть некая словарная статья, в начале (в поле кода) находится не одно, это самое, поле кода, а целых три: метод извлечения данных метод сохранения данных метод определения расположения данных (сами данные, либо информация, позволяющая получит их), то есть, примерно так: [read][write]['][reference] Нуу это ж медленно! Чем длиннее конвееры, тем медленнее становится косвенный переход. |
Автор: | mOleg [ Пт ноя 05, 2010 14:26 ] |
Заголовок сообщения: | Re: 2VALUE |
dynamic-wind писал(а): Нуу это ж медленно! Чем длиннее конвееры, тем медленнее становится косвенный переход. И что? не пользуйтесь VALUE, пользуйтесь VARIABLE У каждого решения есть свои достоинства и недостатки. Value - очень элегантный механизм. |
Автор: | ArtemKAD [ Пт ноя 05, 2010 19:35 ] |
Заголовок сообщения: | Re: 2VALUE |
dynamic-wind писал(а): mOleg писал(а): Еще раз, инлайнить тут просто нечего! у тебя есть некая словарная статья, в начале (в поле кода) находится не одно, это самое, поле кода, а целых три: метод извлечения данных метод сохранения данных метод определения расположения данных (сами данные, либо информация, позволяющая получит их), то есть, примерно так: [read][write]['][reference] Нуу это ж медленно! Чем длиннее конвееры, тем медленнее становится косвенный переход. Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее... |
Автор: | mOleg [ Пт ноя 05, 2010 20:40 ] |
Заголовок сообщения: | Re: 2VALUE |
вообще слово: "инлайнить" - режет слух. Речь ведь идет об оптимизации кода. Оптимизировать же можно вызов, то есть вместо классического в косвенном шитом коде: [(TO)][(name)], где в [] находятся токены, может присутствовать CALL (to name), что, собственно, и сделано в СПФ. |
Автор: | dynamic-wind [ Сб ноя 06, 2010 01:12 ] |
Заголовок сообщения: | Re: 2VALUE |
ArtemKAD писал(а): Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее... Тоже верно! Так и не надо делать DTC, код ТО (там всего пара команд) надо подставлять по месту использования. И опять мы натыкаемся на старые ф-товские грабли: почему-то подставлять код считается неудобно, опасно, некошерно |
Автор: | F-MAP [ Сб ноя 06, 2010 12:46 ] |
Заголовок сообщения: | Re: 2VALUE |
Цитата: Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее... А все таки интересно. Может кто-то тестировал отделяя код от данных, на сколько медленее получается на современных процах? |
Автор: | F-MAP [ Сб ноя 06, 2010 12:53 ] |
Заголовок сообщения: | Re: 2VALUE |
Цитата: на на сколько медленее получается на современных процах? получается на современных процах? Сразу попрвлюсь Цитата: на сколько быстрее получается на современных процах?
|
Автор: | ygrek [ Сб дек 18, 2010 19:06 ] |
Заголовок сообщения: | Re: 2VALUE |
F-MAP писал(а): Нужна помощь! Понадобилось преписать код, обрабатывающий числа двойной длины, конкретно хотелось иметь аналог слова VALUE, как бы 2VALUE, работающее с числами двойной длины, посмотрел исходники, попытался сам написать, но видимо не силен в ассемблере: ~ygrek/lib/2value.f ~profit/misc/2value.f |
Автор: | Гость [ Чт мар 03, 2011 19:38 ] |
Заголовок сообщения: | Re: 2VALUE |
Без 2TO можно обойтись, если ввести AT ,как в книге Баранова и Ноздрунова. Тогда будет : 0 S>D 2VALUE COUNTER COUNTER 1. D+ AT COUNTER 2! \ увеличение счетчика на один |
Автор: | Гость [ Чт мар 03, 2011 19:42 ] |
Заголовок сообщения: | Re: 2VALUE |
Где : AT ' >BODY STATE @ IF LIT, THEN ; IMMEDIATE |
Автор: | Гость [ Вс окт 16, 2011 19:22 ] |
Заголовок сообщения: | Re: 2VALUE |
chess писал(а): Ради спортивного интереса переделал VALUE и 2VALUE под одно TO: ..................... Этот момент можно обойти путем использования локальных переменых или локально-именованных глобальных переменных, код которых удален от собственно данных на величину большую объема кэша процессора и использование которых не требует чтения из входного потока. ну или положить это в отдельный словарь и переключатся на него по необходимости. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |