COUNT: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 29 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''COUNT''' — стандартное слово [[Каллисто]].
'''COUNT''' (подсчёт, счётчик) — стандартное слово [[Каллисто]].
COUNT          ( a -- a1 U )                  Подсчёт. Даёт адрес a1 и длину U строки со счётчиком a.
[[Файл:address.gif|thumb|right|285px|[[Стек данных|Стек]] до работы COUNT<br>Картинка из книги Лео Броди «Starting FORTH»]]
[[Файл:addressp1.gif|thumb|right|287px|[[Стек данных|Стек]] после работы COUNT<br>Картинка из книги Лео Броди «Starting FORTH»]]
Кладёт в стек адрес первой литеры a1 и число литер u строки со счётчиком a.


Дать адрес первой литеры и число литер N строки со счётчиком T.
== Ввод слова COUNT ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 3|{{Серая клавиша|3}}]] [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша 2|{{Серая клавиша|2}}]]


== COUNT в стандарте ANS Forth ==
6.1.0980  COUNT                                                          CORE
            ( c-addr1 -- c-addr2 u )
            Возвращает спецификацию символьной строки для строки со счетчиком
            сохраненной в c-addr1.  c-addr2 - адрес первого символа после c-
            addr1. u - содержимое символа в c-addr1, который является длиной в
            символах строки в c-addr2.
== История ==
=== COUNT в предыдущем стандарте Forth-83 (англ.) ===
      COUNT        addr1 -- addr2 +n            79
          addr2 is addr1+1 and +n is the length of the counted string
          at addr1.  The byte at addr1 contains the byte count +n.
          Range of +n is {0.255}  See:  "string, counted"
=== COUNT в стандарте Forth-79 (англ.) ===
COUNT          addr -- addr+1 n              159
    Leave  the  address  addr+1 and the character  count  of  text
    beginning  at addr.  The first byte at addr must contain  the
    character count n.  Range of n is {0..255}.
=== COUNT в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
COUNT          addr1 --- addr2 n            L0
        Leave the byte address addr2 and byte count n of a message text
        beginning at address addr1. It is presumed that the first byte at
        addr1 contains the text byte count and the actual text starts with
        the second byte.
        Typically COUNT is followed by TYPE.
== Реализация ==
<pre>
3094 ;#COUNT
3095 ; COUNT            ( a −− a1 U )                        Подсчитать. Дать адрес a1 и длину U строки со счётчиком a.
3096 LCOUNT:        .DB    5
3097                .TEXT  "COUNT"                        ; ( a −− a+1 u )
3098                .DW    LBUILD                          ; Преобразовать строку со счётчиком в адрес−длина.
3099 COUNT:          .DW CALL, DUP,ONEP,SWAP,CAT, EXIT      ; DUP 1+ SWAP C@
</pre>
Реализация из SP-Forth 4.20:
<pre>
CODE COUNT ( c-addr1 -- c-addr2 u ) \ 94
\ Получить строку символов из строки со счетчиком c-addr1.
\ c-addr2 - адрес первого символа за c-addr1.
\ u - содержимое байта c-addr1, являющееся длиной строки символов,
\ начинающейся с адреса c-addr2.
    LEA EBP, -4 [EBP]
    LEA EDX, 1 [EAX]
    MOVZX EAX, BYTE [EAX]
    MOV [EBP], EDX
    RET
END-CODE
</pre>
=== Советская реализация ===
Юрий Семёнов приводит следующее определение слова COUNT (стр. 36):
: COUNT  ( a -- a+1 # )  ↑ 1+  ↔ C@ ;
Описание и определение слова COUNT в ядре ФОРТ-ЕС:
<PRE>
COUNT    Т->А,N ДАТЬ АДРЕС ПЕРВОЙ ЛИТЕРЫ И ЧИСЛО              28
          ЛИТЕР N СТРОКИ СО СЧЕТЧИКОМ Т
                    Экран номер 28
( 31.03.86 LIT" COUNT ," " ". (."/ ." C" ( ,( QUIT ABORT )
: COUNT ( T->A,N)  DUP 1+ SWAP C@ 2DUP + С@ IF 1+ THEN ;
</PRE>
Определение слова COUNT в FORTH ИТЭФ:
<PRE>
            HEAD    205Q,'COUN',324Q,COUNT,$COL          ; COUNT
            DW  DUBL,ONEP,SWAP,CAT,SEMI
</PRE>


== Ссылки ==
== Ссылки ==
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0980 Слово COUNT в стандарте ANS Forth] ''(англ.)''
* {{Исходник|COUNT|COUNT}}
* [http://www.forth200x.org/documents/html/core.html#core:COUNT Слово COUNT в черновике Forth 200x] ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0980 COUNT] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth-standard.org/standard/core/COUNT COUNT] в черновике Forth 200x ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\10.WWOD-WYWOD ВВОД-ВЫВОД] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf10/sf10.html I/O and You] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




Строка 12: Строка 92:
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]

Текущая версия от 16:52, 10 ноября 2017

COUNT (подсчёт, счётчик) — стандартное слово Каллисто.

COUNT          ( a -- a1 U )                   Подсчёт. Даёт адрес a1 и длину U строки со счётчиком a.
Стек до работы COUNT
Картинка из книги Лео Броди «Starting FORTH»
Стек после работы COUNT
Картинка из книги Лео Броди «Starting FORTH»

Кладёт в стек адрес первой литеры a1 и число литер u строки со счётчиком a.

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

В режиме ЛАТ последовательно нажмите клавиши  С/П   5   3   4   2 

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

6.1.0980   COUNT                                                           CORE
           ( c-addr1 -- c-addr2 u )
           Возвращает спецификацию символьной строки для строки со счетчиком 
           сохраненной в c-addr1.   c-addr2 - адрес первого символа после c-
           addr1. u - содержимое символа в c-addr1, который является длиной в 
           символах строки в c-addr2.

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

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

     COUNT        addr1 -- addr2 +n             79
          addr2 is addr1+1 and +n is the length of the counted string
          at addr1.  The byte at addr1 contains the byte count +n.
          Range of +n is {0.255}  See:  "string, counted"

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

COUNT          addr -- addr+1 n              159
    Leave  the  address  addr+1 and the character  count  of  text
    beginning  at addr.   The first byte at addr must contain  the
    character count n.  Range of n is {0..255}.

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

COUNT          addr1 --- addr2 n             L0
       Leave the byte address addr2 and byte count n of a message text
       beginning at address addr1. It is presumed that the first byte at
       addr1 contains the text byte count and the actual text starts with
       the second byte.
       Typically COUNT is followed by TYPE.

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

3094 ;#COUNT
3095 ; COUNT            ( a −− a1 U )                        Подсчитать. Дать адрес a1 и длину U строки со счётчиком a.
3096 LCOUNT:         .DB     5
3097                 .TEXT   "COUNT"                         ; ( a −− a+1 u )
3098                 .DW     LBUILD                          ; Преобразовать строку со счётчиком в адрес−длина.
3099 COUNT:          .DW CALL, DUP,ONEP,SWAP,CAT, EXIT       ; DUP 1+ SWAP C@

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

CODE COUNT ( c-addr1 -- c-addr2 u ) \ 94
\ Получить строку символов из строки со счетчиком c-addr1.
\ c-addr2 - адрес первого символа за c-addr1.
\ u - содержимое байта c-addr1, являющееся длиной строки символов,
\ начинающейся с адреса c-addr2.
     LEA EBP, -4 [EBP]
     LEA EDX, 1 [EAX]
     MOVZX EAX, BYTE [EAX]
     MOV [EBP], EDX
     RET
END-CODE

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

Юрий Семёнов приводит следующее определение слова COUNT (стр. 36):

: COUNT  ( a -- a+1 # )   ↑ 1+  ↔ C@ ;

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

COUNT     Т->А,N ДАТЬ АДРЕС ПЕРВОЙ ЛИТЕРЫ И ЧИСЛО               28
          ЛИТЕР N СТРОКИ СО СЧЕТЧИКОМ Т

                     Экран номер 28
( 31.03.86 LIT" COUNT ," " ". (."/ ." C" ( ,( QUIT ABORT )

: COUNT ( T->A,N)  DUP 1+ SWAP C@ 2DUP + С@ IF 1+ THEN ;

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

             HEAD    205Q,'COUN',324Q,COUNT,$COL          ; COUNT
             DW  DUBL,ONEP,SWAP,CAT,SEMI

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


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


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