Редактирование: LEAVE
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''LEAVE''' (выйти) — стандартное слово [[Каллисто | '''LEAVE''' (выйти) — стандартное слово [[Каллисто]]. | ||
Досрочно и немедленно прерывает цикл [[FOR]] .. [[NEXT]]. Управление передаётся на слово, следующее после ближайшего [[NEXT]]. | |||
== Ввод слова LEAVE == | == Ввод слова LEAVE == | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] {{ШГ←}} [[Клавиша ↔|{{Серая клавиша|↔}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша ↔|{{Серая клавиша|↔}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | ||
== LEAVE в стандарте ANS Forth == | == LEAVE в стандарте ANS Forth == | ||
6.1.1760 LEAVE CORE | 6.1.1760 LEAVE CORE | ||
Интерпретация: Семантика интерпретации для этого слова не определена. | Интерпретация: Семантика интерпретации для этого слова не определена. | ||
Строка 26: | Строка 23: | ||
Типичное использование: | Типичное использование: | ||
: X ... DO ... IF ... LEAVE THEN ... LOOP ... ; | : X ... DO ... IF ... LEAVE THEN ... LOOP ... ; | ||
== LEAVE в предыдущем стандарте Forth-83 (англ.) == | |||
LEAVE -- C,I,83 | LEAVE -- C,I,83 | ||
-- (compiling) | -- (compiling) | ||
Строка 48: | Строка 37: | ||
may appear within a do-loop. See: "9.3 Return Stack" | may appear within a do-loop. See: "9.3 Return Stack" | ||
== LEAVE в стандарте Forth-79 (англ.) == | |||
LEAVE C,213 | LEAVE C,213 | ||
Force termination of a DO-LOOP at the next LOOP or +LOOP by | Force termination of a DO-LOOP at the next LOOP or +LOOP by | ||
Строка 56: | Строка 45: | ||
encountered. | encountered. | ||
== LEAVE в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
LEAVE C,L0 | LEAVE C,L0 | ||
Force termination of a DO-LOOP at the next opportunity by setting | Force termination of a DO-LOOP at the next opportunity by setting | ||
Строка 63: | Строка 52: | ||
or +LOOP is encountered. | or +LOOP is encountered. | ||
== | == История == | ||
Реализация слова LEAVE в fig-Форте приравнивала счётчик цикла DO…LOOP к его границе, в результате чего последующее слово LOOP не выполняло переход на очередной цикл DO. 16-битный цикл DO…LOOP тех времён имел изъян. Он не позволял сделать просмотр адресов на границе 32Кб, например 32760 10 TYPE выдавало ошибку. Это вынудило провести реформу цикла DO…LOOP. | |||
В круговом цикле на 64K (описанном у Баранова-Ноздрунова) старая реализация LEAVE перестала работать и стандарт Форта-83 утвердил новый вариант LEAVE (немедленно прерывающий цикл), как стандартный. Этот новый вариант и реализован в [[Каллисто]], где роль цикла DO выполняет более современный цикл [[FOR]] … [[NEXT]], взятый из colorFORTH'а. | |||
== Ссылки == | == Ссылки == | ||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1760 LEAVE] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1760 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1760 LEAVE] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1760 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http:// | * Слово [http://www.forth200x.org/documents/html3/core/LEAVE.html LEAVE] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:LEAVE комментарий к нему] в черновике Forth 200x ''(англ.)'' | ||
* | * См. также слово [[UNLOOP]] | ||
Строка 134: | Строка 68: | ||
[[Категория:Примитивы]] | [[Категория:Примитивы]] | ||
[[Категория:Структуры управления Каллисто]] | [[Категория:Структуры управления Каллисто]] | ||
[[Категория: | [[Категория:Слова Каллисто без стековых диаграмм]] | ||