⟩MARK

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

>MARK (отметить) — фортовское слово Каллисто. Скомпилировать адрес перехода вперёд.

>MARK          ( −− a )                             Отметить текущий адрес для ссылки вперёд.

Слово >MARK резервирует место для опережающей ссылки и оставляет адрес зарезервированного места на стеке. Позже слово >RESOLVE разместит в зарезервированном месте правильный адрес перехода.

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

В режиме NUM последовательно нажмите клавиши  F   ИП     Р-ГРД-Г   ÷  $\mathrm{\overset{\leftarrow}{ШГ}}$  ×   9 

Для возврата в режим NUM нажмите синюю клавишу  P .

AHEAD в стандарте ANS Forth[править]

15.6.2.0702   AHEAD                                                   TOOLS EXT
        Интерпретация: Семантика интерпретации для этого слова не определена.

        Компиляция: ( C: -- orig )
            Помещает адрес ячейки новой неразрешенной ссылки вперед orig на 
            стек потока управления. Добавляет семантику времени-выполнения, 
            данную ниже к текущему определению. Семантика не завершена, пока 
            orig не разрешена (например, с помощью THEN).

        Время-выполнения: ( -- )
            Продолжает выполнение с адреса ячейки, определенного разрешением 
            orig.

История[править]

>MARK в предыдущем стандарте Forth-83 (англ.)[править]

     >MARK        -- addr                       C,83    "forward-mark"
          Used at the source of a forward branch.  Typically used
          after either BRANCH or ?BRANCH .  Compiles space in the
          dictionary for a branch address which will later be resolved
          by >RESOLVE .

Реализация[править]

3629 ;#FwdMARK
3630 ; >MARK            ( −− a )                             Отметить текущий адрес для ссылки вперёд.
3631 LGMARK:         .DB     5
3632                 .TEXT   ">MARK"
3633                 .DW     LBTICK
3634 GMARK:          .DW CALL, HERE, ZERO, BRAN,RCOMMA

Реализация из SP-Forth 4.20:

: AHEAD  \ 94 TOOLS EXT
\ Интерпретация: семантика неопределена.
\ Компиляция: ( C: -- orig )
\ Положить место неразрешенной ссылки вперед orig на стек управления.
\ Добавить семантику времени выполнения, данную ниже, к текущему определению.
\ Семантика незавершена до тех пор, пока orig не разрешится (например,
\ по THEN).
\ Время выполнения: ( -- )
\ Продолжить выполнение с позиции, заданной разрешением orig.
  HERE BRANCH, >MARK 2
; IMMEDIATE
…

: >MARK ( -> A )
  DP @ DUP TO :-SET 4 - 
;

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

Описание и определение слова >MARK в ядре ФОРТ-ЕС:

>MARK   К ->А ОТМЕТИТЬ ТЕКУЩИЙ АДРЕС ДЛЯ ССЫЛКИ ВПЕРЕД          19

                     Экран номер 19
( 31.03.86   СРАВНЕНИЯ И РАЗРЕШЕНИЯ В ШИТОМ КОДЕ)

: >MARK ( ->A) HERE 0 , ;

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


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


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