⟨MARK

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

<MARK (отметить) — фортовское слово Каллисто. Запомнить адрес для перехода назад.

<MARK          ( −− a )                             Отметить текущий адрес для ссылки назад.

Слово <MARK кладёт на стек текущий адрес вершины словаря. Позже слово <RESOLVE создаст в шитом коде ссылку на этот адрес, сняв его со стека.

Обычно <MARK и <RESOLVE используются в паре для компиляции адреса переходов назад: BRANCH и ?BRANCH.

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

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

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

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

     <MARK        -- addr                       C,83   "backward-mark"
          Used at the destination of a backward branch.  addr is
          typically only used by <RESOLVE to compile a branch address.

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

2309 JHERE:          PPRM rrDP RME ∗ PPRM rlDP + KM3 ; Выдать адрес первой свободной ячейки в словаре.
2310                 KGOTO9
…
3646 ;#BkwMARK
3647 ; <MARK            ( −− a )                             Отметить текущий адрес для ссылки назад.
3648 LLMARK:         .DB     5
3649                 .TEXT   "<MARK"
3650                 .DW     LGRESOLVE
3651 LMARK:          .DW JHERE

Реализация в SP-Forth 4.20[править]

: <MARK ( -> A )
  HERE
;

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

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

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

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

: <MARK (->A) HERE ;

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


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


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