Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''IMMEDIATE''' (немедленный, непосредственный, немедленно) — стандартное слово [[Каллисто]]. | | '''IMMEDIATE''' — стандартное слово [[Каллисто]]. |
| IMMEDIATE ( −− ) Изменить признак IMMEDIATE последней созданной статьи.
| | |
| Преобразует слово, за описанием которого следует, в оператор, исполняемый [[Слово ]|при компиляции]]. | | Преобразует слово, за описанием которого следует, в оператор, исполняемый при компиляции. |
|
| |
|
| == Ввод слова IMMEDIATE ==
| |
| В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша K|{{Синяя клавиша|K}}]] [[Клавиша 7|{{Серая клавиша|7}}]] {{ШГ←}} [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
| |
|
| |
|
| == IMMEDIATE в стандарте ANS Forth == | | == IMMEDIATE в стандарте ANS Forth == |
| <pre>
| |
| 6.1.1710 IMMEDIATE CORE | | 6.1.1710 IMMEDIATE CORE |
| ( -- ) | | ( -- ) |
Строка 19: |
Строка 16: |
| Типичное использование: | | Типичное использование: |
| : X ... ; IMMEDIATE | | : X ... ; IMMEDIATE |
| </pre>
| |
|
| |
|
| == История ==
| |
| В некоторых Фортах IMMEDIATE не переключает, а строго устанавливает. Как его там сбросить? :−)
| |
|
| |
|
| В некоторых Фортах вместо числа 128 используется константа &IFLAG или &IMMEDIATE
| | == IMMEDIATE в предыдущем стандарте Forth-83 (англ.) == |
| | |
| Чак Мур, создатель Форта, при разработке своего первого форт-процессора Novix сделал для него версию Форта под названием cmForth. В ней не было слова IMMEDIATE, а был список MACRO. Список MACRO просматривался первым и добавленные в него слова исполнялись без компиляции. Похожая система перешла в {{colorForth}} и, возможно, будет реализована в [[Каллисто 2.0]].
| |
| | |
| === 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 |
Строка 34: |
Строка 24: |
| rather than compiled. | | 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],
| |
|
| |
| == Реализация ==
| |
| Изменяет признак немедленного исполнения в байте-счётчике, первом байте заголовка [[LAST|последней созданной]] [[Словарная статья|словарной статьи]].
| |
| <pre>
| |
| 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
| |
| </pre>
| |
|
| |
| === Реализации в SP-Forth 4.20 ===
| |
| <pre>
| |
| 1 CONSTANT &IMMEDIATE \ константа для высечения флажка IMMEDIATE
| |
| …
| |
| : IS-IMMEDIATE ( NFA -> F )
| |
| NAME>F C@ &IMMEDIATE AND
| |
| ;
| |
| …
| |
| \ для обратной совместимости:
| |
| : ?IMMEDIATE ( NFA -> F ) IS-IMMEDIATE ;
| |
| …
| |
| : IMMEDIATE ( -- ) \ 94
| |
| \ Сделать последнее определение словом немедленного исполнения.
| |
| \ Исключительная ситуация возникает, если последнее определение
| |
| \ не имеет имени.
| |
| LAST @ NAME>F DUP C@ &IMMEDIATE OR SWAP C!
| |
| ;
| |
| </pre>
| |
| <pre>
| |
| : IMMEDIATE [T] IMMEDIATE [I] ;
| |
| </pre>
| |
|
| |
| === Советская реализация ===
| |
| У Баранова-Ноздрунова определение слова IMMEDIATE выглядит так (стр. 64):
| |
| : IMMEDIATE ( ---> ) LATEST C@ 128 OR LATEST C! ;
| |
|
| |
| Описание и определение слова IMMEDIATE в ядре ФОРТ-ЕС:
| |
| <PRE>
| |
| IMMEDIATE -> ДАТЬ ПРИЗНАК "IMMEDIATE" ПОСЛЕДНЕЙ 31
| |
| СОЗДАННОЙ СЛОВАРНОЙ СТАТЬЕ
| |
|
| |
| Экран номер 31
| |
| ( 31.03.86 LATEST DEFINITIONS SMUDGE UNSMUDGE IMMEDIATE ID.)
| |
|
| |
| : IMMEDIATE ( ->) LATEST С@ [ &IFLAG ] LITERAL OR LATEST C! ;
| |
| </PRE>
| |
| Определение слова IMMEDIATE в FORTH ИТЭФ:
| |
| <PRE>
| |
| HEAD 211Q,'IMMEDIAT',305Q,IMMED,$COL ; IMMEDIATE
| |
| DW LATES,$CL,TOGL,SEMI
| |
| </PRE>
| |
|
| |
|
| == Ссылки == | | == Ссылки == |
| * {{Исходник|IMMEDIATE|IMMEDIATE}} | | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1710 Слово IMMEDIATE в стандарте ANS Forth] ''(англ.)'' и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1710 комментарий к нему] ''(англ.)'' |
| * См. слова [[STATE]], [[INTERPRET]], [[Слово [|[]] и [[Слово ]|]]]
| | * [http://www.forth200x.org/documents/html/core.html#core:IMMEDIATE Слово IMMEDIATE в черновике Forth 200x] ''(англ.)'' и [http://www.forth200x.org/documents/html/rationale.html#rat:core: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-standard.org/standard/core/IMMEDIATE IMMEDIATE] и [http://forth-standard.org/standard/rationale#rat:core:IMMEDIATE комментарий к нему] в черновике Forth 200x ''(англ.)'' | |
| * [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\11.RASSIRENIE%20KOMPILATORA:%20OPREDELAUSIE%20I%20KOMPILIRUUSIE%20SLOWA РАСШИРЕНИЕ КОМПИЛЯТОРА: ОПРЕДЕЛЯЮЩИЕ И КОМПИЛИРУЮЩИЕ СЛОВА] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
| |
| * [http://www.forth.com/starting-forth/sf11/sf11.html Extending the Compiler] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
| |
|
| |
|
|
| |
|
Строка 117: |
Строка 33: |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Слова высокого уровня]]
| |
| [[Категория:Компилирующие слова]]
| |
| [[Категория:Стандартные слова]]
| |
| [[Категория:1994 CORE]]
| |
| [[Категория:2012 CORE]]
| |