IMMEDIATE: различия между версиями
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) |
||
Строка 61: | Строка 61: | ||
3402 .DB 128 | 3402 .DB 128 | ||
3403 .DW TOGL, EXIT | 3403 .DW TOGL, EXIT | ||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
1 CONSTANT &IMMEDIATE \ константа для высечения флажка IMMEDIATE | |||
</pre> | </pre> | ||
Версия от 18:53, 10 ноября 2017
IMMEDIATE (немедленный, непосредственный, немедленно) — стандартное слово Каллисто.
IMMEDIATE ( −− ) Изменить признак IMMEDIATE последней созданной статьи.
Преобразует слово, за описанием которого следует, в оператор, исполняемый при компиляции.
Ввод слова IMMEDIATE
В режиме ЛАТ последовательно нажмите клавиши 7 ÷ ÷ ИП K 7 ШГ← 2 ИП
IMMEDIATE в стандарте ANS Forth
6.1.1710 IMMEDIATE CORE ( -- ) Делает самое последнее определение словом немедленного исполнения. Неопределенная ситуация существует, если самое последнее определение не имеет имени. См.: D.6.7 Immediate-ности. A.6.1.1710 IMMEDIATE Типичное использование: : X ... ; IMMEDIATE
История
В некоторых Фортах IMMEDIATE не переключает, а строго устанавливает. Как его там сбросить? :−)
В некоторых Фортах вместо числа 128 используется константа &IFLAG или &IMMEDIATE
Чак Мур, создатель Форта, при разработке своего первого форт-процессора Novix сделал для него версию Форта под названием cmForth. В ней не было слова IMMEDIATE, а был список MACRO. Список MACRO просматривался первым и добавленные в него слова исполнялись без компиляции. Похожая система перешла в colorForth и, возможно, будет реализована в Каллисто 2.0.
IMMEDIATE в предыдущем стандарте Forth-83 (англ.)
IMMEDIATE -- 79 Marks the most recently created dictionary entry as a word which will be executed when encountered during compilation rather than compiled.
IMMEDIATE в стандарте Forth-79 (англ.)
IMMEDIATE 103 Marks the most recently made dictionary entry as a word which will be executed when encountered during compilation rather than compiled.
IMMEDIATE в fig-FORTH Release 1 glossary, май 1979 (англ.)
IMMEDIATE Mark the most recently made definition so that when encountered at compile time, it will be executed rather than being compiled. i.e. the precedence bit in its header is set. This method allows definitions to handle unusual compiling situations, rather. than build them into the fundamental compiler. The user may force compilation of an immediate definition by preceeding it with [COMPILE],
Реализация
Изменяет признак немедленного исполнения в байте-счётчике, первом байте заголовка последней созданной словарной статьи.
3396 ;#IMMEDIATE 3397 ; IMMEDIATE ( −− ) Изменить признак IMMEDIATE последней созданной статьи. 3398 LIMMED: .DB 9 3399 .TEXT "IMMEDIATE" 3400 .DW LINTER 3401 IMMED: .DW CALL, LATES, LITB ; Преобразовать слово, за описанием которого следует, в оператор, исполняемый при компиляции. 3402 .DB 128 3403 .DW TOGL, EXIT
Реализация из SP-Forth 4.20:
1 CONSTANT &IMMEDIATE \ константа для высечения флажка IMMEDIATE
Советская реализация
У Баранова-Ноздрунова определение слова IMMEDIATE выглядит так (стр. 64):
: IMMEDIATE ( ---> ) LATEST C@ 128 OR LATEST C! ;
Описание и определение слова IMMEDIATE в ядре ФОРТ-ЕС:
IMMEDIATE -> ДАТЬ ПРИЗНАК "IMMEDIATE" ПОСЛЕДНЕЙ 31 СОЗДАННОЙ СЛОВАРНОЙ СТАТЬЕ Экран номер 31 ( 31.03.86 LATEST DEFINITIONS SMUDGE UNSMUDGE IMMEDIATE ID.) : IMMEDIATE ( ->) LATEST С@ [ &IFLAG ] LITERAL OR LATEST C! ;
Определение слова IMMEDIATE в FORTH ИТЭФ:
HEAD 211Q,'IMMEDIAT',305Q,IMMED,$COL ; IMMEDIATE DW LATES,$CL,TOGL,SEMI
Ссылки
- Исходный текст слова IMMEDIATE в Каллисто Классик 1.0
- См. слова STATE, INTERPRET, [ и ]
- Слово IMMEDIATE и комментарий к нему в стандарте ANS Forth (англ.)
- Слово IMMEDIATE и комментарий к нему в черновике Forth 200x (англ.)
- РАСШИРЕНИЕ КОМПИЛЯТОРА: ОПРЕДЕЛЯЮЩИЕ И КОМПИЛИРУЮЩИЕ СЛОВА в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Extending the Compiler в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |