Редактирование: BRANCH
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''BRANCH''' (переход, ветвление) — | '''BRANCH''' (переход, ветвление) — стандартное слово [[Каллисто]]. Продолжить интерпретацию от значения следующего скомпилированного адреса. | ||
BRANCH ( -- ) Ветвление. Безусловный переход в шитом коде. | BRANCH ( -- ) Ветвление. Безусловный переход в шитом коде. | ||
Сразу после оператора BRANCH должен быть скомпилирован адрес ветвления. Слово BRANCH переустанавливает указатель интерпретации по адресу, скомпилированному вслед за | Сразу после оператора BRANCH должен быть скомпилирован адрес ветвления. Слово BRANCH переустанавливает указатель интерпретации по адресу, скомпилированному вслед за данной [[CFA|ссылкой на поле кода]] BRANCH. | ||
Низкоуровневое слово BRANCH не является аналогом оператора GOTO, хотя имеет схожее назначение. Обычно BRANCH не используется | Низкоуровневое слово BRANCH не является аналогом оператора GOTO, хотя имеет схожее назначение. Обычно BRANCH не используется при составлении программ, а только в словах вроде [[ELSE]] и [[REPEAT]]. Слово BRANCH может потребоваться при реализации собственных структур управления, например отсутствующего в [[Каллисто]] оператора CASE. | ||
== Ввод слова BRANCH == | == Ввод слова BRANCH == | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша ×|{{Серая клавиша|×}}]] {{ШГ←}} [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша ПП|{{Чёрная клавиша|ПП}}]] | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша ПП|{{Чёрная клавиша|ПП}}]] | ||
== BRANCH в предыдущем стандарте Forth-83 (англ.) == | |||
BRANCH -- C,83 | BRANCH -- C,83 | ||
When used in the form: COMPILE BRANCH an unconditional | When used in the form: COMPILE BRANCH an unconditional | ||
Строка 19: | Строка 16: | ||
BRANCH with <RESOLVE or >MARK . | BRANCH with <RESOLVE or >MARK . | ||
== BRANCH в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
BRANCH C2,L0 | BRANCH C2,L0 | ||
The run-time proceedure to unconditionally branch. An in-line offset | The run-time proceedure to unconditionally branch. An in-line offset | ||
Строка 25: | Строка 22: | ||
BRANCH is compiled by ELSE, AGAIN, REPEAT. | BRANCH is compiled by ELSE, AGAIN, REPEAT. | ||
== Реализация | == Реализация BRANCH == | ||
У Баранова-Ноздрунова приводится следующее высокоуровневое описание слова BRANCH (стр. 54): | |||
У Баранова-Ноздрунова приводится следующее высокоуровневое | |||
: BRANCH ( ---> ) R> @ >R ; | : BRANCH ( ---> ) R> @ >R ; | ||
Для повышения скорости исполнения в [[Каллисто]] BRANCH реализован, как [[примитив]]. | Для повышения скорости исполнения в [[Каллисто]] BRANCH реализован, как [[примитив]]. | ||
Слово BRANCH в ФОРТ-ЕС было [[примитив]]ом. Вот его определение: | |||
<PRE> | <PRE> | ||
Экран номер 5 | Экран номер 5 | ||
( 09.09.86 BRANCH ?BRANCH (LOOP/ (+LOOP/ ) | ( 09.09.86 BRANCH ?BRANCH (LOOP/ (+LOOP/ ) | ||
Строка 78: | Строка 35: | ||
CODE BRANCH M: ВRANСН# | CODE BRANCH M: ВRANСН# | ||
RI 0 (, RI RFORTH LH, RI RMASK NR, RNEXT BR, | RI 0 (, RI RFORTH LH, RI RMASK NR, RNEXT BR, | ||
</PRE> | </PRE> | ||
== Ссылки == | == Ссылки == | ||
* [http://ru.wikipedia.org/wiki/Goto Оператор GOTO] и [https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B0 команда перехода] на Википедии | * [http://ru.wikipedia.org/wiki/Goto Оператор GOTO] и [https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0_%D0%BF%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4%D0%B0 команда перехода] на Википедии | ||
* [https://en.wikipedia.org/wiki/Branch_%28computer_science%29 Branch на английской Википедии] ''(англ.)'' | * [https://en.wikipedia.org/wiki/Branch_%28computer_science%29 Branch на английской Википедии] ''(англ.)'' |