Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 02:35

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Как называется такой приём?
СообщениеДобавлено: Пн сен 10, 2018 19:25 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Как рассказать не знаю, покажу кодом

Код:
\ для удобства можно вообще без него обойтись
: DOES:
HERE LAST-LFA L>CFA @ >param ! \ присвоить указатель месту DOES> в CREATE-слове
-1 STATE !
;

\ подменить изначальные данные, которые использует DOES.
: USING    \ ?? addr xt -- ??
>param @   \ перейти к месту DOES>
>R        \ можно и EXECUTE, но так меньше трасса на стеке возвратов. м. б. и критично через EXECUTE   
;

\ пример

CREATE CELL+ 4 , DOES: @ + ;

VARIABLE TST 2 TST !
10 CELL+ .
10 TST ' CELL+ USING .
10 STATE ' CELL+ USING .


Так вот, товарищи знатоки, как такой приём подмены массива данных для кода после DOES> называется?

Где можно применять?
Связку CREATE .... DOES: можно применять, к примеру, для опр. слов должных работать как в штатном так и в доп. режимах
Как вариант, пригодится для задания портов по умолчанию и функций обработки для всяких-там работ с сетью и БД.
Надо быстренько заменить? Не вопрос, формируем свой массив и подсовываем за DOES>

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как называется такой приём?
СообщениеДобавлено: Пн сен 10, 2018 23:38 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Victor__v писал(а):
Так вот, товарищи знатоки, как такой приём подмены массива данных для кода после DOES> называется?
Где можно применять?

Техника векторизованного DOER|MAKE из Броуди2 Не? :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как называется такой приём?
СообщениеДобавлено: Вт сен 11, 2018 00:02 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
KPG писал(а):

Тама обычный вектор, а ту-то векторами и не пахнет.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как называется такой приём?
СообщениеДобавлено: Пт сен 21, 2018 12:55 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Victor__v писал(а):
Так вот, товарищи знатоки, как такой приём подмены массива данных для кода после DOES> называется?
Да никак.
Твой прием можно обобщить от залетания управлением в точку сразу после DOES> , до залетания управлением в любую точку в середине шитого кода в определении любого другого слова и выполнение хвоста этого определения вплоть до ;
Вопрос всегда ли такое будет работать, на любом-ли шитом коде ?

Вон, я проверил на своем дурном Фиг-32 с косвенным шитым кодом :
Код:
Win-32 FIG-Forth Alpha (C)Ethereal
0 VARIABLE POINT
Ok
: ZZZ ." BLABLA" [ HERE POINT ! ] ." BLIBLI" ;
Ok
: TEST POINT @ >R ;
Ok
TEST
BLIBLI Ok
BYE
Ну залетание в середину шитого кода слова и довыполнение хвоста определения работает. Ну можно использовать в момент воспаления фантазии. Просто одна из возможностей, которую можно наверно превратить в самодостаточную смыслом идею, но ты-же сам спрашиваешь
Victor__v писал(а):
Где можно применять?
так-что сам еще до самодостаточности свою мысль недовел.


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

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


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

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


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

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