⟩MARK
Перейти к навигации
Перейти к поиску
>MARK (отметить) — фортовское слово Каллисто. Начать компиляцию адреса перехода вперёд.
>MARK ( −− a ) Отметить текущий адрес для ссылки вперёд.
Слово >MARK резервирует место в словаре под адрес ссылки вперёд в шитом коде и оставляет адрес этого зарезервированного места на стеке. Адрес назначения ссылки неопределён, пока слово >RESOLVE не разместит в зарезервированном месте правильный адрес перехода, завершив создание ссылки.
Обычно >MARK и >RESOLVE используются в паре для компиляции адреса переходов вперёд: BRANCH и ?BRANCH.
Ввод слова >MARK[править]
В режиме NUM последовательно нажмите клавиши F ИП Р-ГРД-Г ÷ ШГ← × 9
Для возврата в режим NUM нажмите синюю клавишу P .
AHEAD в стандарте ANS Forth[править]
Слово AHEAD в Форте ANS начинает компиляцию безусловного перехода вперёд.
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 , ;
Ссылки[править]
- Исходный текст слова >MARK в Каллисто Классик 1.0
- См. слова <MARK, <RESOLVE и >RESOLVE
- См. также слова BRANCH и ?BRANCH
- Слово AHEAD в стандарте ANS Forth (англ.)
- Слово AHEAD в черновике Forth 200x (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |