ЕЩЕ ОДИН ВАРИАНТ ИСПОЛЬЗОВАНИЯ СТЕКА ВОЗВРАТОВ
Итак, вы уже знаете, каким образом Форт-система хранит адреса возврата в стеке возвратов, и вам понятно, почему при хранении в этом стеке временных переменных нужна особая осторожность. При выполнении следующего определения : ТЕСТ 3 >R CR CR CR ;
в стек возвратов помещается значение 3, затем три раза осуществляется возврат каретки и происходит возврат, но куда? По адресу 3 нет никакого слова, поэтому скорее всего вероятно разрушение системы.
В большинстве Форт-систем во время выполнения цикла DO информация об индексе и границе хранится в стеке возвратов (и
не всегда в том виде, в котором вы ожидаете). Именно поэтому в пределах цикла DO LOOP использование операций >R и R> должно быть симметричным. Другими словами, вы имеете право писать так: ... >R ... DO ... LOOP ... R> ... ;
и не должны писать иначе, например: ... >R ... DO ... R> ... LOOP ... ;
Кроме того, если вы внутри тела цикла поместите в стек возвратов временное значение, то слово выборки индекса цикла I не будет выполняться правильно: ... DO ... >R ... I ... R> ... LOOP 5