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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

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

ну или положить это в отдельный словарь и переключатся на него по необходимости.
Сообщение Добавлено: Вс окт 16, 2011 19:22
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
Где
: AT ' >BODY STATE @ IF LIT, THEN ; IMMEDIATE
Сообщение Добавлено: Чт мар 03, 2011 19:42
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
Без 2TO можно обойтись, если ввести AT ,как в книге Баранова и
Ноздрунова. Тогда будет :
0 S>D 2VALUE COUNTER
COUNTER 1. D+ AT COUNTER 2! \ увеличение счетчика на один
Сообщение Добавлено: Чт мар 03, 2011 19:38
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
F-MAP писал(а):
Нужна помощь! Понадобилось преписать код, обрабатывающий числа двойной длины, конкретно хотелось иметь аналог слова VALUE, как бы 2VALUE, работающее с числами двойной длины, посмотрел исходники, попытался сам написать, но видимо не силен в ассемблере:


~ygrek/lib/2value.f
~profit/misc/2value.f
Сообщение Добавлено: Сб дек 18, 2010 19:06
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
Цитата:
на на сколько медленее получается на современных процах?
получается на современных процах?

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

Сообщение Добавлено: Сб ноя 06, 2010 12:53
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
Цитата:
Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее...


А все таки интересно. Может кто-то тестировал отделяя код от данных, на сколько медленее получается на современных процах?
Сообщение Добавлено: Сб ноя 06, 2010 12:46
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
ArtemKAD писал(а):
Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее...

Тоже верно! Так и не надо делать DTC, код ТО (там всего пара команд) надо подставлять по месту использования. И опять мы натыкаемся на старые ф-товские грабли: почему-то подставлять код считается неудобно, опасно, некошерно :(
Сообщение Добавлено: Сб ноя 06, 2010 01:12
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
вообще слово: "инлайнить" - режет слух. Речь ведь идет об оптимизации кода. Оптимизировать же можно вызов, то есть вместо классического в косвенном шитом коде: [(TO)][(name)], где в [] находятся токены,
может присутствовать CALL (to name), что, собственно, и сделано в СПФ.
Сообщение Добавлено: Пт ноя 05, 2010 20:40
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
dynamic-wind писал(а):
mOleg писал(а):
Еще раз, инлайнить тут просто нечего!
у тебя есть некая словарная статья, в начале (в поле кода) находится не одно, это самое, поле кода, а целых три:
метод извлечения данных
метод сохранения данных
метод определения расположения данных
(сами данные, либо информация, позволяющая получит их), то есть, примерно так: [read][write]['][reference]

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

Не медленнее кеш-промаха. Весь косвенный код и значение это чистые данные. А вот если туда инлайнить код боюсь на современных Интелах получиться сильно медленнее...
Сообщение Добавлено: Пт ноя 05, 2010 19:35
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
dynamic-wind писал(а):
Нуу это ж медленно! Чем длиннее конвееры, тем медленнее становится косвенный переход.

И что? не пользуйтесь VALUE, пользуйтесь VARIABLE 8)
У каждого решения есть свои достоинства и недостатки. Value - очень элегантный механизм.
Сообщение Добавлено: Пт ноя 05, 2010 14:26
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
mOleg писал(а):
Еще раз, инлайнить тут просто нечего!
у тебя есть некая словарная статья, в начале (в поле кода) находится не одно, это самое, поле кода, а целых три:
метод извлечения данных
метод сохранения данных
метод определения расположения данных
(сами данные, либо информация, позволяющая получит их), то есть, примерно так: [read][write]['][reference]

Нуу это ж медленно! Чем длиннее конвееры, тем медленнее становится косвенный переход.
Сообщение Добавлено: Пт ноя 05, 2010 14:13
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
вопрос писал(а):
и вот куда попадут код и данные в случае инлайнироватния

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

заинлайнить что? в смысле какую часть кода?
Вообще-то, VALUE переменные по сути не являются переменными - это скорее объекты с тремя методами, за которыми может скрываться что угодно. Иными словами, имеется явный интерфейс, через который следует обращаться к ним.
Сообщение Добавлено: Чт ноя 04, 2010 19:45
  Заголовок сообщения:  Re: 2VALUE  Ответить с цитатой
mOleg писал(а):
Да все подходит. Вообще это лучше всего смотрится в косвенном ШК, когда просто читается адрес следующего фрагмента шитого кода, добавляется смещение в нужное поле кода (у VALUE (бывших QUAN) переменых их три) и туда передается управление. Проблема с СПФом лишь в том, что поля кода размещены не одно за другим, а потом данные, а в перемешку (чего в форке, к примеру, давно уже и нет):

Если мы захотим заинлайнить этот код?
Сообщение Добавлено: Чт ноя 04, 2010 19:27

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


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