IMMEDIATE: различия между версиями
AtH (обсуждение | вклад) (→Ссылки) |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
'''IMMEDIATE''' (немедленный, непосредственный, немедленно) — стандартное слово [[Каллисто]]. | '''IMMEDIATE''' (немедленный, непосредственный, немедленно) — стандартное слово [[Каллисто]]. | ||
IMMEDIATE ( −− ) Изменить признак IMMEDIATE последней созданной статьи. | |||
Преобразует слово, за описанием которого следует, в оператор, исполняемый при компиляции. | Преобразует слово, за описанием которого следует, в оператор, исполняемый при компиляции. | ||
== Ввод слова IMMEDIATE == | == Ввод слова IMMEDIATE == | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | ||
== Детали реализации == | |||
Изменяет признак немедленного исполнения в байте-счётчике, первом байте заголовка [[LAST|последней созданной]] [[Словарная статья|словарной статьи]]. | |||
== IMMEDIATE в стандарте ANS Forth == | == IMMEDIATE в стандарте ANS Forth == | ||
<pre> | |||
6.1.1710 IMMEDIATE CORE | 6.1.1710 IMMEDIATE CORE | ||
( -- ) | ( -- ) | ||
Строка 20: | Строка 22: | ||
Типичное использование: | Типичное использование: | ||
: X ... ; IMMEDIATE | : X ... ; IMMEDIATE | ||
</pre> | |||
== История == | |||
В некоторых Фортах IMMEDIATE не переключает, а строго устанавливает. Как его там сбросить? :−) | |||
Чак Мур, создатель Форта, при разработке своего первого форт-процессора Novix сделал для него версию Форта под названием cmForth | |||
В ней не было слова IMMEDIATE, а был список MACRO | |||
Список MACRO просматривался первым и добавленные в него слова исполнялись без компиляции. Похожая система перешла в {{colorForth}}. | |||
== IMMEDIATE в предыдущем стандарте Forth-83 (англ.) == | === IMMEDIATE в предыдущем стандарте Forth-83 (англ.) === | ||
IMMEDIATE -- 79 | IMMEDIATE -- 79 | ||
Marks the most recently created dictionary entry as a word | Marks the most recently created dictionary entry as a word | ||
Строка 27: | Строка 39: | ||
rather than compiled. | rather than compiled. | ||
== IMMEDIATE в стандарте Forth-79 (англ.) == | === IMMEDIATE в стандарте Forth-79 (англ.) === | ||
IMMEDIATE 103 | IMMEDIATE 103 | ||
Marks the most recently made dictionary entry as a word which | Marks the most recently made dictionary entry as a word which | ||
Строка 33: | Строка 45: | ||
than compiled. | than compiled. | ||
== IMMEDIATE в fig-FORTH Release 1 glossary, май 1979 (англ.) == | === IMMEDIATE в fig-FORTH Release 1 glossary, май 1979 (англ.) === | ||
IMMEDIATE | IMMEDIATE | ||
Mark the most recently made definition so that when encountered at | Mark the most recently made definition so that when encountered at | ||
Строка 42: | Строка 54: | ||
The user may force compilation of an immediate definition by | The user may force compilation of an immediate definition by | ||
preceeding it with [COMPILE], | preceeding it with [COMPILE], | ||
== Реализация == | == Реализация == | ||
Строка 71: | Строка 76: | ||
== Ссылки == | == Ссылки == | ||
* {{Исходник|IMMEDIATE|IMMEDIATE}} | |||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1710 IMMEDIATE] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1710 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1710 IMMEDIATE] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1710 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http://forth-standard.org/standard/core/IMMEDIATE IMMEDIATE] и [http://forth-standard.org/standard/rationale#rat:core:IMMEDIATE комментарий к нему] в черновике Forth 200x ''(англ.)'' | * Слово [http://forth-standard.org/standard/core/IMMEDIATE IMMEDIATE] и [http://forth-standard.org/standard/rationale#rat:core:IMMEDIATE комментарий к нему] в черновике Forth 200x ''(англ.)'' | ||
Строка 81: | Строка 87: | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Слова высокого уровня]] | [[Категория:Слова высокого уровня]] | ||
Версия от 23:39, 15 июня 2016
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 не переключает, а строго устанавливает. Как его там сбросить? :−)
Чак Мур, создатель Форта, при разработке своего первого форт-процессора Novix сделал для него версию Форта под названием cmForth
В ней не было слова IMMEDIATE, а был список MACRO
Список MACRO просматривался первым и добавленные в него слова исполнялись без компиляции. Похожая система перешла в colorForth.
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],
Реализация
У Баранова-Ноздрунова определение слова 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
- Слово IMMEDIATE и комментарий к нему в стандарте ANS Forth (англ.)
- Слово IMMEDIATE и комментарий к нему в черновике Forth 200x (англ.)
- РАСШИРЕНИЕ КОМПИЛЯТОРА: ОПРЕДЕЛЯЮЩИЕ И КОМПИЛИРУЮЩИЕ СЛОВА в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Extending the Compiler в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |