?STACK

Материал из ПМК вики
Версия от 19:15, 10 ноября 2017; AtH (обсуждение | вклад) (→‎Реализация)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

?STACK — фортовское слово Каллисто.

?STACK         ( −− )                               Сгенерировать ошибку 1, если стек вычерпан (или переполнен).

Выдать ошибку «Исчерпание стека», если он менее, чем пуст и «Исчерпание памяти» при зазоре, меньшем 5(?) элементов.

Ввод слова ?STACK[править]

В режиме NUM последовательно нажмите клавиши  K     Р-ГРД-Г   1   2   ШГ←   С/П   9 

Для возврата в режим NUM нажмите синюю клавишу  P .

?STACK в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

?STACK
       Issue an error message is the stack is out of bounds. This
       definition may be installation dependent.

Реализация[править]

3373 ;#qSTACK
3374 ; ?STACK           ( −− )                               Сгенерировать ошибку 1, если стек вычерпан (или переполнен).
3375 LQSTAC:         .DB     6
3376                 .TEXT   "?STACK"
3377                 .DW     LFLITE
3378 QSTAC:          .DW     CALL
3379                 .DW SZERO,UAT, ONEM, SPAT, LESS, ONE, BRAN,RQERR

Реализация из SP-Forth 4.20:

: ?STACK ( -> ) \ выдать ошибку "исчерпание стека", если он более чем пуст
  SP@ S0 @ SWAP U< IF S0 @ SP! -4 THROW THEN
;

Советская реализация[править]

Описание и определение слова ?STACK в ядре ФОРТ-ЕС:

?GAP    * N-> ВЫДАТЬ ОШИБКУ "ИСЧЕРПАНИЕ ПАМЯТИ", ЕСЛИ           29
          ЗАЗОР МЕЖДУ ВЕРШИНАМИ СТЕКА И СЛОВАРЯ МЕНЕЕ N БАЙТОВ
?STACK  * -> ВЫДАТЬ ОШИБКУ "ИСЧЕРПАНИЕ СТЕКА", ЕСЛИ             29
          ОН БОЛЕЕ, ЧЕМ ПУСТ, И "ИСЧЕРПАНИЕ ПАМЯТИ"
                      ПРИ ЗАЗОРЕ, МЕНЬШЕМ 10 БАЙТОВ

                     Экран номер 32
( 31.03.86   CONSTANT  VARIABLE 2CONSTANT  2VARIABLE  : ; )

: ?GAP ( N->) HERE + SP@ SWAP U< ABORT" ИСЧЕРПАНИЕ ПАМЯТИ" ;

: ?STACK ( ->) S0 @ SP@ U< ABORT" ИСЧЕРПАНИЕ СТЕКА" 10 ?GAP ;

Определение слова ?STACK в FORTH ИТЭФ:

             HEAD    206Q,'?STAC',313Q,QSTAC,$COL         ; ?STACK
             DW  SZERO,AT,CFA,SPAT,ULESS,ONE,QERR
             DW  LIT,-200Q,SPAT,ULESS,TWO
             DW  QERR, SEMI

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.