IMMEDIATE

Материал из ПМК вики
Перейти к: навигация, поиск

IMMEDIATE (немедленный, непосредственный, немедленно) — стандартное слово Каллисто.

IMMEDIATE      ( −− )                               Изменить признак IMMEDIATE последней созданной статьи.

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

Ввод слова IMMEDIATE[править]

В режиме ЛАТ последовательно нажмите клавиши  7   ÷   ÷   ИП   K   7  $\mathrm{\overset{\leftarrow}{ШГ}}$  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
…
: 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!
;
: IMMEDIATE [T] IMMEDIATE [I] ;

Советская реализация[править]

У Баранова-Ноздрунова определение слова 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

Ссылки[править]


  Nopictures-icon.png У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Stub-icon-48px.png Это заготовка статьи. Вы можете помочь проекту, дополнив её.