Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср апр 24, 2024 08:20

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: по поводу оптимизации.
СообщениеДобавлено: Сб ноя 03, 2007 19:54 
Не в сети
Moderator
Moderator
Аватара пользователя

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

Код:
\ 03-11-2007 ~mOleg
\ Copyright [C] 2007 mOleg mininoleg@yahoo.com
\ inline подстановка кода при сборке слов (набросок)

REQUIRE ALIAS   devel\~moleg\lib\util\alias.f
REQUIRE COMPILE devel\~moleg\lib\util\compile.f
REQUIRE STREAM{ devel\~moleg\lib\arrays\stream.f

\ ------------------------------------------------------------------------------

ALIAS : ::
ALIAS ; ;; IMMEDIATE

VOCABULARY INLINE  \ в этом словаре будут все примитивы

\ перехватываются ':' и ';' хотя правильнее было бы перехватывать '[' и ']'
\ Однако, для этого нужно менять код ядра, либо собирать ядро без оптимизации,
\ это значит, что слова '[' и ']' внутри определений не стоит использовать
:: : ( --> ) ALSO INLINE [COMPILE] : ;;
:: ; ( --> ) PREVIOUS    [COMPILE] ; ;; IMMEDIATE

\ начинает создание макроса для инлайн подстановки
: inline{  ( | name hex-stream --> )
          ALSO INLINE DEFINITIONS
          : [COMPILE] STREAM{ ;

\ завершает hex-stream поток и завершает создание макроса
\ перед inline обязательно должен стоять символ } завершения потока
\ пробел между символом '}' и словом inline не обязателен
: inline ( asc # --> )
         SLIT, COMPILE S,
         [COMPILE] ; IMMEDIATE
         PREVIOUS DEFINITIONS
         ; IMMEDIATE

\ примеры макросов для inline подстановки
inline{ DUP   8D6DFC 894500 }inline
inline{ DROP  8B4599 8D6D04 }inline
inline{ SWAP  8B5500 894500 8BC2 }inline
inline{ OVER  8D6DFC 894500 8B4504 }inline
inline{ NIP   8D6D04 }inline
inline{ TUCK  8D6DFC 8B5504 894504 895500 }inline
inline{ ROT   8B5500 894500 8B4504 895504 }inline
inline{ RDROP 5B 8D642404 }inline

: proba OVER OVER ;

\ ' proba 20 DUMP \ смотрим код

\ 1 2 proba D= 1 + THROW \ проверка работоспособности


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


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

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


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

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


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

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