Начальный курс программирования на языке Форт

         

ЕЩЕ ОДИН ВАРИАНТ ИСПОЛЬЗОВАНИЯ СТЕКА ВОЗВРАТОВ


Итак, вы уже знаете, каким образом Форт-система хранит адреса возврата в стеке возвратов, и вам понятно, почему при хранении в этом стеке временных переменных нужна особая осторожность. При выполнении следующего определения : ТЕСТ 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



Содержание раздела