.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
Ссылки
- Исходный текст слова .S в Каллисто Классик 1.0
- Слово .S (dot-s) и комментарий к нему в стандарте ANS Forth (англ.)
- Слово .S (dot-s) и комментарий к нему в черновике Forth 200x (англ.)
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |