Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт апр 20, 2018 18:17

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Наблюдение процесса оптимизации в SPF .
СообщениеДобавлено: Ср ноя 28, 2007 11:24 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Попробовал запустить процесс наблюдения работы оптимизатора
пересобрав ядро с : M\ ; IMMEDIATE
и подключил devel\~mak\opttr.f

После определения слова наблюдаю трассу из одних нулей.

Вопрос:
Как это правильно делать и имеет ли значение какие версии файлов в src?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наблюдение процесса оптимизации в SPF .
СообщениеДобавлено: Ср ноя 28, 2007 12:07 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Kopa писал(а):
После определения слова наблюдаю трассу из одних нулей.


Нужно использовать дизассемблер с ограничением по HERE.
Можно использовать старый.
Но лучше подправить новый:
В http://spf.cvs.sourceforge.net/spf/lib/ext/disasm.f
: REST ( addr -- )
HERE REST-AREA ;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 28, 2007 14:00 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Теперь понятно где были грабли:)

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

P.S. Проводится ли перед mасroopt.f оптимизация целевым компилятором, или
это делает только mасroopt.?


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Kopa писал(а):
Трасса есть, но может имеет смысл ее выводить, когда это возможно,
хотя бы в начале в привязке к именам кода сигнатуры примитива.


Не понял, чего, куда и когда выводть?

Kopa писал(а):
Проводится ли перед mасroopt.f оптимизация целевым компилятором, или
это делает только mасroopt.?


Для ЦК оптимизатор загружается в \src\tc_spf.f
Раскоментируй в \src\tc_spf.f
Код:
\ ~mak\listing1.f


В C:\spf4-017\src\spf.f
Замени
S" src\macroopt.f" INCLUDED
на
S" src\macroopt.f" INCLUDED_L

Будет сгенерирован листинг macroopt.f


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Mihail писал(а):
Kopa писал(а):
Трасса есть, но может имеет смысл ее выводить, когда это возможно,
хотя бы в начале в привязке к именам кода сигнатуры примитива.

Не понял, чего, куда и когда выводть?
[/code]

Например: : BOUNDS OVER + SWAP ;
при дизасемблировании, по возможности во входном потоке
распознать OVER в ассемблерном виде и т.д.

В этом примере, SWAP фактически выступает селектором, к какому
элементу на стеке применить операцию + :)

P.S. Анализировались, ли Форт исходники на наличие шаблонных
применений связок примитивов. Например >R 2DROP R>
шаблон для сбрасывания 2-ух ( может быть n ) нижележащих
операндов под вершиной стека.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4900
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
вообще, на сколько я понял, манипуляции на стеке возвратов не оптимизировались.
то есть RDROP RDROP RDROP будет выглядеть как три команды, а не как одна 8(
столкнулся с этим когда писал портабельный DO-LOOP.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 29, 2007 09:15 
mOleg писал(а):
вообще, на сколько я понял, манипуляции на стеке возвратов не оптимизировались.
то есть RDROP RDROP RDROP будет выглядеть как три команды, а не как одна 8(

Все эти вещи оптимизируются тогда когда люди с ними сталкиваются. Михаил же пояснял что он улучшает код который видит сам. Если видите неоптимальность -- то так и скажите сразу, предложите сразу решение, а не вылезайте потом, через год, "а-а-а, а я эту бяку ещё го-о-д назад заметил!".

Когда у меня возникают запросы на оптимизацию тех или иных вариантов кода -- я сразу их отправляю Михаилу по почте. По мере своей свободности, он решает такие вопросы. Не скажу точно, но правок и дополнений в макрооптимизатор где-то под пять сделаны по таким моим просьбам.


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

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

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


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
mOleg писал(а):
вообще, на сколько я понял, манипуляции на стеке возвратов не оптимизировались.
то есть RDROP RDROP RDROP будет выглядеть как три команды, а не как одна 8(
столкнулся с этим когда писал портабельный DO-LOOP.


Наверное
т.к.
Код:
  >R >R 2DROP R> R>   >R >R 2DROP R> R>
в сравнении с
   >R >R 2DROP  2DROP R> R>


дают разный код:)


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Kopa писал(а):
Например: : BOUNDS OVER + SWAP ;


SEE BOUNDS
дает

Код:
58E8A0 034500      ADD     EAX , 0 [EBP]
58E8A3 8B5500      MOV     EDX , 0 [EBP]
58E8A6 894500      MOV     0 [EBP] , EAX
58E8A9 8BC2      MOV     EAX , EDX
58E8AB C3      RET     NEAR


Сделал:

Код:
   MOV     EDX , 0 [EBP]
   ADD     EAX , EDX
   MOV     0 [EBP] , EAX
   MOV     EAX , EDX
   RET     NEAR


Kopa писал(а):
Анализировались, ли Форт исходники на наличие шаблонных
применений связок примитивов.


Зачем анализировать исходники? Достаточно смотреть машинный код.


Kopa писал(а):
Например >R 2DROP R>


Чем NIP NIP не устраивает?

mOleg писал(а):
RDROP RDROP RDROP


http://spf.cvs.sourceforge.net/spf/src/macroopt.f


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

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Попробовал дать spf4 и VFX
Код:
: */ -ROT * SWAP / ;


макрооптимизатор не справился:)

P.S. Михаил Можно описать процедуру для изменения оптимизатора
например на этом примере.
Интересно также какие эвристики и в какой
последовательности отработают на подготовленном n-ом тестовом Форт коде.
Используется или нет информация о количестве параметров слов при их
совместной оптимизации? ( подозреваю что нет )


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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Kopa писал(а):
Михаил Можно описать процедуру для изменения оптимизатора
например на этом примере.


Исходя из http://wiki.forth.org.ru/optimizer
Создаю верисию с : M\ ( POSTPONE \) ; IMMEDIATE

Создаю файл содержащий

Код:
REQUIRE DoDTST ~mak\OptTr.f
REQUIRE .WOP0 ~mak\dop.f

: */
[ ' DoDTST TO DTST ]
-ROT * SWAP / ;


Нажимая пробел дохожу до
Код:
579DDB 8B5504           MOV     EDX , 4 [EBP]
579DDE 894504           MOV     4 [EBP] , EAX
579DE1 8B4500           MOV     EAX , 0 [EBP]
579DE4 895500           MOV     0 [EBP] , EDX
579DE7 F76D00           IMUL    0 [EBP]


Последняя команда в сочетании с предыдущей может быть заменена на IMUL EDX
Для генерации условия правила создаю скрипт в файле с именем DDD.F
вида:
Код:
CR .( OP1 @ 2+ C@)
CR .( OP0 @ 2+ C@  XOR)  \ индексы двух последних команд должны совпасть

\ .( DUP C@ C3 XOR )

.WOP1  DROP  \ префикс W 2 байта (без индекса)
.WOP0  DROP


При нажатии клавиши 'D' интерпретируется файл с именем DDD.F
получаю
Код:
OP1 @ 2+ C@
OP0 @ 2+ C@  XOR
OP1 @ W@ 6DF7 XOR OR \ 579DE7 F76D00            IMUL    0 [EBP]
OP0 @ W@ 558B XOR OR \ 579DEA 8B5504            MOV     EDX , 4 [EBP]


Добавлять правило в программу-базу OPT-RULES, нужно в определенное
место, в зависимости, от количества обрабатываемых команд.
Новое правило следует добавлять а конец своей группы.
Группу 2-х командных правил завершает строка
OP2 @ :-SET U< IF TRUE EXIT THEN
начинающаяся с начала строки
Код:
OP1 @ 2+ C@
OP0 @ 2+ C@  XOR
OP1 @ W@ 5589 XOR OR \ 895500            MOV     0 [EBP] , EDX
OP0 @ W@ 6DF7 XOR OR \ F76D00            IMUL    0 [EBP]
0= IF  M\ 296 DTST   \ уникальный четный номер правила (вспомогательное средство)
   EAF7 OP0 @ W!   \  IMUL    EDX
       -1 ALLOT  \ удаляем лишний байт
       FALSE  M\ 297 DTST  \ на 1 больше - завершитель
       EXIT
   THEN


Пока думаю, следует разобраться с этим. Затем, можно продолжить.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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