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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: слова, учитывающие текущее состояние системы
СообщениеДобавлено: Вс май 03, 2009 17:54 
Не в сети
Moderator
Moderator
Аватара пользователя

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

: LITERAL ( n --> ) STATE @ IF LIT, THEN ; IMMEDIATE

то есть в режиме трансляции слово ничего не делает, а в режиме компиляции добавляет литеральное значение числа n , лежащего на стеке. Слово на мой взгляд зря сделано IMMEDIATE словом.
Слишком часто встречается код: [COMPILE] LITERAL , либо заменяющий его код с проверкой STATE
Гораздо логичнее было бы писать так: [ bla bla bla LIT, ] а не классическое [ bla bla bla ] LITERAL
А сам LITERAL использовать везде без [COMPILE] как это делается сейчас. Тем не менее слово LITERAL достаточно полезное.
По аналогии с ним часто (по крайней мере мне) требуется слово, обладающее аналогичными свойствами, но для случая работы с исполнимыми адресами:

: REGULAR ( xt --> ) STATE @ IF COMPILE, ELSE EXECUTE THEN ;

причем, оно должно быть обязательно неIMMEDIATE словом!
пример использования:

: TO ( n / name --> ) ' 0x09 + REGULAR ; IMMEDIATE
: FROM ( / name --> xt ) ' 0x0E + REGULAR ; IMMEDIATE

Кстати, сам STATE тоже неудачно выбран. Слово должно быть по-хорошему VALUE (точнее USER-VALUE) переменной, так как чаще всего используется в виде STATE @ , а устанавливают значение STATE всего два слова: '[' и ']'

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


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

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


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

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


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

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