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