Редактирование: LEAVE
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''LEAVE''' (выйти) — стандартное слово [[Каллисто | '''LEAVE''' (выйти) — стандартное слово [[Каллисто]]. | ||
Досрочно прерывает цикл [[FOR]] .. [[NEXT]] (только для области данных) | |||
== LEAVE в стандарте ANS Forth == | == LEAVE в стандарте ANS Forth == | ||
6.1.1760 LEAVE CORE | 6.1.1760 LEAVE CORE | ||
Интерпретация: Семантика интерпретации для этого слова не определена. | Интерпретация: Семантика интерпретации для этого слова не определена. | ||
Строка 26: | Строка 21: | ||
Типичное использование: | Типичное использование: | ||
: 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: | Строка 36: | ||
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: | Строка 53: | ||
or +LOOP is encountered. | or +LOOP is encountered. | ||
== | == История == | ||
Реализация слова LEAVE в fig-Форте приравнивала счётчик цикла DO…LOOP к его границе, в результате чего последующее слово LOOP не выполняло переход на очередной цикл DO. 16-битный цикл DO…LOOP тех времён имел изъян. Он не позволял сделать просмотр адресов на границе 32Кб, например 32760 10 TYPE выдавало ошибку. Это вынудило провести реформу цикла DO…LOOP. | |||
После того, как в Форте-83 круговой цикл на 64K (описанный у Баранова-Ноздрунова) стал стандартным, старая реализация LEAVE перестала работать и сообщество Форта приняло новый вариант LEAVE (немедленно прерывающий цикл), как стандартный. | |||
== Ссылки == | == Ссылки == | ||
* | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1760 Слово LEAVE в стандарте ANS Forth] ''(англ.)'' и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1760 комментарий к нему] ''(англ.)'' | ||
* [http://www.forth200x.org/documents/html/core.html#core:LEAVE Слово LEAVE в черновике Forth 200x] ''(англ.)'' и [http://www.forth200x.org/documents/html/rationale.html#rat:core:LEAVE комментарий к нему] ''(англ.)'' | |||
* См. также слово [[UNLOOP]] | |||
* | |||
Строка 132: | Строка 68: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Структуры управления Каллисто]] | [[Категория:Структуры управления Каллисто]] | ||