Редактирование: IMMEDIATE

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 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: Строка 18:
  Типичное использование:
  Типичное использование:
         : 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: Строка 26:
           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
Строка 40: Строка 33:
     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
Строка 50: Строка 44:
         preceeding it with [COMPILE],
         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 ==
У Баранова-Ноздрунова определение слова IMMEDIATE выглядит так (стр. 64):
У Баранова-Ноздрунова определение слова IMMEDIATE выглядит так (стр. 64):
  : IMMEDIATE  ( ---> )  LATEST C@ 128 OR LATEST C!  ;
  : 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}}
* См. слова [[STATE]], [[INTERPRET]], [[Слово [|&#91;]] и [[Слово ]|&#93;]]
* Слово [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://www.forth200x.org/documents/html3/core/IMMEDIATE.html IMMEDIATE] и [http://www.forth200x.org/documents/html3/rationale.html#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: Строка 58:
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Слова Каллисто без стековых диаграмм]]
[[Категория:Компилирующие слова]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)