S0

Материал из ПМК вики
Перейти к: навигация, поиск

S0 (читается «эс-нуль») — фортовская переменная Каллисто.

S0             ( −− a )                             Переменная, адрес дна стека данных.

Переменная S0 содержит адрес дна стека данных.

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

В режиме ЛАТ последовательно нажмите три клавиши  1     P   0 

Эти нажатия оставляют клавиатуру в режиме NUM.

Маленькие хитрости[править]

Программист может переустановить дно десятичного стека, зарезервировав для себя некоторое количество десятичных регистров с фиксированными номерами от R999 и ниже. Эти регистры не будут использоваться Каллисто. Не забудьте переинициализировать SP после изменения переменной S0.

Если вам не важно знать заранее номера десятичных регистров, для их резервирования проще использовать встроенное слово ДALLOT.

История[править]

Как и в Каллисто, в Форте-83 и fig-Форте S0 является переменной, содержащей адрес дна стека. В Форте-79 S0 является константой, засылающей в стек адрес дна стека.

Итого S0 Форта-79 эквивалентно S0 @ Каллисто и fig-Форта.

S0 была убрана из действующего стандарта ANS Forth и её нет в черновиках стандарта Форт-2012.

S0 в предыдущем стандарте Forth-83 (англ.)[править]

     S0           -- addr                       U             "s-zero"
          A variable containing the address of the bottom of the
          stack.

S0 в стандарте Forth-79 (англ.)[править]

S0             -- addr                                     "s-zero"
    Returns the address of the bottom of the stack, when empty.

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

 S0             ---  addr                          U
        A user variable that contains the initial value for the stack
        pointer.
        Pronounced S-zero. See SP!

 The computation stack grows downward from the terminal buffer toward the
 dictionary which grows upward. The origin of the stack is is in variable S0
 (S-zero) and is loaded from a boot-up literal.

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

 136 rrS0            .EQU     1131                   ; 11131  S0 − Указатель начала стека параметров
 137 rlS0            .EQU     1132
 138 pS0             .EQU      131
…
2748 ;               ∗∗ USER−переменные ∗∗
2749 ;
2750 ;#SZero
2751 ; S0               ( −− a )                             Переменная, адрес дна стека данных.
2752 LSZERO:         .DB     2
2753                 .TEXT   "S0"
2754                 .DW     LATR
2755 SZERO:          .DW     SUSE
2756                 .DB pS0

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

USER S0   \ адрес дна стека данных

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

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

S0       +П->А ПЕРЕМЕННАЯ - АДРЕС ДНА СТЕКА ДАННЫХ              7

                      Экран номер 7
( 09.09.86 КОНСТАНТЫ И СИСТЕМНЫЕ ПЕРЕМЕННЫЕ      )

VARIABLE  S0                   ( АДРЕС ДНА СТЕКА ДАННЫХ)

Определение переменной S0 в FORTH ИТЭФ:

            ** USER-переменные **

            HEAD     202Q,'S',260Q,SZERO,$USE             ; S0
            DW 6
            ...
   STACK   SEGMENT STACK              ; Стек параметров
           DW  64 DUP (?)
   XS0     LABEL   WORD
           DW  0,0   ; STACK

   STACK   ENDS

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


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


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