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