BRANCH
BRANCH (переход, ветвление) — фортовское слово Каллисто. Продолжить интерпретацию от значения следующего скомпилированного адреса.
BRANCH ( -- ) Ветвление. Безусловный переход в шитом коде.
Сразу после оператора BRANCH должен быть скомпилирован адрес ветвления. Слово BRANCH переустанавливает указатель интерпретации по адресу, скомпилированному вслед за данным токеном BRANCH.
Низкоуровневое слово BRANCH не является аналогом оператора GOTO, хотя имеет схожее назначение. Обычно BRANCH не используется напрямую при разработке приложений, а только вызывается из слов вроде ELSE, AGAIN и REPEAT. Слово BRANCH может потребоваться для реализации собственных структур управления, например отсутствующего в Каллисто оператора CASE.
Ввод слова BRANCH
В режиме ЛАТ последовательно нажмите клавиши В/О × ШГ← 4 С/П ПП
История
Слово BRANCH слишком низкоуровневое, чтобы его включали в современные стандарты Форта. Однако оно держалось в них до 1994 года.
BRANCH в предыдущем стандарте Forth-83 (англ.)
BRANCH -- C,83 When used in the form: COMPILE BRANCH an unconditional branch operation is compiled. A branch address must be compiled immediately following this compilation address. The branch address is typically generated by following BRANCH with <RESOLVE or >MARK .
BRANCH в fig-FORTH Release 1 glossary, май 1979 (англ.)
BRANCH C2,L0 The run-time proceedure to unconditionally branch. An in-line offset is added to the interpretive pointer IP to branch ahead or back. BRANCH is compiled by ELSE, AGAIN, REPEAT.
Реализация
У Баранова-Ноздрунова приводится следующее высокоуровневое определение слова BRANCH (стр. 54):
: BRANCH ( ---> ) R> @ >R ;
Для повышения скорости исполнения в Каллисто BRANCH реализован, как примитив.
В ФОРТ-ЕС слово BRANCH также было примитивом. Вот его описание и определение:
BRANCH К -> ПРОДОЛЖИТЬ ИНТЕРПРЕТАЦИЮ ОТ ЗНАЧЕНИЯ 5 СЛЕДУЮЩЕГО СКОМПИЛИРОВАННОГО АДРЕСА BRANCH# M ПРОДОЛЖЕНИЕ ИНТЕРПРЕТАЦИИ ОТ АДРЕСА В 5 СЛЕДУЮНЕМ ПОЛУСЛОВЕ Экран номер 5 ( 09.09.86 BRANCH ?BRANCH (LOOP/ (+LOOP/ ) CODE BRANCH M: ВRANСН# RI 0 (, RI RFORTH LH, RI RMASK NR, RNEXT BR,
В FORTH ИТЭФ слово BRANCH тоже было примитивом:
HEAD 206Q,'BRANC',310Q,BRAN ; BRANCH CNT: ADD SI, [SI] NEXT
Ссылки
- Исходный текст слова BRANCH в Каллисто Классик 1.0
- См. слово ?BRANCH
- См. также слова >MARK и >RESOLVE, <MARK и <RESOLVE
- Оператор GOTO и команда перехода на Википедии
- Branch на английской Википедии (англ.)
- См. также команды ПМК БП и Р БП
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |