Редактирование: COUNT

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 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.
 
== Ввод слова 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>


== Ссылки ==
== Ссылки ==
* {{Исходник|COUNT|COUNT}}
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0980 Слово COUNT в стандарте ANS Forth] ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0980 COUNT] в стандарте ANS Forth ''(англ.)''
* [http://www.forth200x.org/documents/html/core.html#core:COUNT Слово COUNT в черновике Forth 200x] ''(англ.)''
* Слово [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] ''(англ.)''




Строка 92: Строка 9:
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Стандартные слова]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/COUNT