U♯⟩

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

U#> — фортовское слово Каллисто.

U#>            ( x −− a c )                         Завершить преобразование целого числа. Дать адрес и длину для TYPE.

В стеке остаётся число полученных символов и адрес, как это требуется для слова TYPE.

Ввод слова U#>[править]

В режиме ЛАТ последовательно нажмите клавиши  3     P   F   3     F   ИП 

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

#> в стандарте ANS Forth[править]

 6.1.0040   #>                       "number-sign-greater"                 CORE
            ( xd -- c-addr u )
            Удаляет xd. Делает выходную строку отображаемого числа доступной 
            как символьную строку. C-addr и u определяют результирующую 
            символьную строку. Программа может заменять символы в пределах 
            строки.

        См.: 6.1.0030 #, 6.1.0050 #S, 6.1.0490 <#.

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

Каллистянское U#> происходит от стандартного слова #> , которое присутствует ещё в Форте−79. У нас x помещается в одной ячейке стека.

Слово U#gt; присутствует в некоторых версиях Форта, откуда и заимствовало своё имя.

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

     #>           32b -- addr +n                79     "sharp-greater"
          Pictured numeric output conversion is ended dropping 32b.
          addr is the address of the resulting output string.  +n is
          the number of characters in the output string.  addr and +n
          together are suitable for TYPE .

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

#>             d -- addr n                   190    "sharp-greater"
    End pictured numeric output conversion.   Drop d,  leaving the
    text address, and character count, suitable for TYPE.

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

#>             d  ---  addr  count              L0
       Terminates numeric output conversion by dropping d, leaving the text
       address and character count suitable for TYPE.

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

3746 ;#Unum−end
3747 ; U#>              ( x −− a c )                         Завершить преобразование целого числа. Дать адрес и длину для TYPE.
3748 LEDIGS:         .DB     3
3749                 .TEXT   "U#>"                   ; ( x −− PAD длина )
3750                 .DW     LSPACS                  ; На стеке останется число получившихся литер и адрес, как это требуется для слова TYPE
3751 EDIGS:          .DW CALL
3752 REDIGS:         .DW DROP, HLD,UAT, PAD,OVER,SUB, EXIT

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

: #> ( xd -- c-addr u ) \ 94
\ Убрать xd. Сделать буфер форматного преобразования доступным в виде
\ строки символов, заданной c-addr и u.
\ Программа может менять символы в этой строке.
  2DROP HLD @ PAD OVER - >CHARS 1-
;

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

Определение слова U#> приводится у Юрия Семёнова (стр. 100) и Баранова-Ноздрунова (стр. 37):

 : U#>   ( A ---> B,N )    DROP  HLD @  PAD OVER - ;

В ядре ФОРТ-ЕС слово U#> работало с числовой парой и называлось #>

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

#>        D->A,+N ЗАКОНЧИТЬ ФОРМАТНОЕ ПРЕОБРАЗОВАНИЕ;           37
          ДАТЬ АДРЕС А НАЧАЛА ЛИТЕР И ИХ ЧИСЛО +N

                     Экран номер 37
( 31.03.86  PAD  HOLD  ALPHA  <# #> # #S SIGN )

: #>  ( D->A,+N)  2DROP HLD @ PAD OVER - ;

В FORTH ИТЭФ слово U#> работало с числовой парой и называлось #>

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

             HEAD    202Q,'#',276Q,EDIGS,$COL             ; #>
             DW  DDROP,HLD,AT,PAD,OVER,SUB,SEMI

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


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


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