.S

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

.S (печать стека, читается «точка-эс») — стандартное слово Каллисто. Просмотр стека.

.S             ( −− )                               Печать стека, вершина справа.
Пример работы слова .S

Вывод на индикатор всего содержимого стека данных, оставляющий стек без изменений.

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

В режиме NUM последовательно нажмите три клавиши  /−/   Р-ГРД-Г   1 

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

.S в стандарте ANS Forth[править]

 15.6.1.0220   .S                           "dot-s"                        TOOLS
            ( -- )
            Копирует и отображает значения находящиеся на стеке данных. Формат 
            отображения зависит от реализации.

            .S может быть реализовано с использованием слов вывода отображаемых 
            чисел. Следовательно, его использование может разрушать временную 
            область, идентифицированную #>.

        См.: 3.3.3.6 Другие временные области.

 A.15.6.1.0220   .S
 .S - удобство отладки, найденное почти на всех системах Forth. Оно повсюду 
 упомянуто в текстах Forth.

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

По общепринятому в Форте соглашению вершина стека находится справа. Первым распечатывается дно стека, вершина стека выводится на индикатор последней.

3925 ;#dS
3926 ; .S               ( −− )                               Напечатать стек, вершина справа.
3927 LSTY:           .DB     2
3928                 .TEXT   ".S"                    ; ( −− )
3929                 .DW     LDUMP
3930 STY:            .DW CALL, DEPTH, XFOR,STY3      ; Распечатать всё содержимое стека, оставив стек без изменений.
3931 STY1:           .DW I,ONEM,PICK, FDOT, XNEXT,STY1
3932 STY3:           .DW EXIT

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

: .SN ( n --)
\ Распечатать n верхних элементов стека
   >R BEGIN
         R@
      WHILE
        SP@ R@ 1- CELLS + @ DUP 0< 
        IF DUP U>D (D.) TYPE <# S>D #(SIGNED) #> TYPE SPACE
        ELSE . THEN
        R> 1- >R
      REPEAT RDROP
;
…
: .S ( -- ) \ 94 TOOLS
\ Скопировать и показать значения, находящиеся на стеке данных. Формат зависит 
\ от реализации.
\ .S может быть реализовано с использованием слов форматного преобразования 
\ чисел. Соответственно, он может испортить перемещаемую область, 
\ идентифицируемую #>.
   DEPTH 0 MAX .SN
;
: s.  SP@ S0 @ CELL - 2DUP - 
  DUP 4 = IF DROP 2DROP ." Stack is empty" CR EXIT THEN 
  4 > IF 2DROP ." Stack is underflowed" CR EXIT THEN
  DO I @ . CELL NEGATE +LOOP CR ;

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

В ядре ФОРТ-ЕС слово .S называлось S.

Вот его описание и определение:

S.       *   -> РАСПЕЧАТАТЬ НИ ТЕРМИНАЛЕ СТЕК ДАННЫХ            42

                     Экран номер 42
( 09.09.86  DUMP SNAPSTK  S. R. )
: SNAPSTK RDROP CR  ". ." , ВСЕГО ЗНАЧЕНИЙ "
   2DUP SWAP - 2/ DUP . 0 SWAP < IF ." (ВЕРШИНА СПРАВА)" CR
   2- DO I @ . -2 +LOOP ELSE 2DROP THEN ;
: S. ( ->)  SP@ S0 @ " СТЕК ДАННЫХ" SNAPSTK ;

Определение слов S. и STY в FORTH ИТЭФ:

             HEAD    202Q,'S',256Q,SPOT,$COL              ; S.
             DW  DUBL,UDOT,SEMI
             ...
             HEAD    203Q,'ST',331Q,STY,$COL              ; STY
             DW  DEPTH,DDUP,ZBRAN,STY3-$,ZERO,XDO
   STY1:     DW  I,EIGHT,$MOD,ZEQU,ZBRAN,STY2-$,CR
   STY2:     DW  I,ONEP,PICK,LIT,7,UDOTR,XLOOP,STY1-$
   STY3:     DW  SEMI

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


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