FILL
FILL (заполнить) — стандартное слово Каллисто.
FILL ( a u c −− ) Заполнить. Записать u байтов c, начиная с адреса a.
Слово FILL записывает u байт c в память, начиная с адреса a. Универсальный оператор для заполнения массивов памяти идентичными символами.
Ввод слова FILL
В режиме ЛАТ последовательно нажмите четыре клавиши П 7 − −
FILL в стандарте ANS Forth
6.1.1540 FILL CORE ( c-addr u char -- ) Если u больше чем нуль, сохраняет char в каждом из u последовательных символов в памяти, начинающейся с c-addr.
История
Слово FILL пришло в Каллисто из Форта, где оно является древним и стабильным. В существующем ныне виде слово FILL известно с 1979 года и входит во все стандарты.
FILL в предыдущем стандарте Forth-83 (англ.)
FILL addr u 8b -- 83 u bytes of memory beginning at addr are set to 8b. No action is taken if u is zero.
FILL в стандарте Forth-79 (англ.)
FILL addr n byte -- 234 Fill memory beginning at address with a sequence of n copies of byte. If the quantity n is less than or equal to zero, take no action.
FILL в fig-FORTH Release 1 glossary, май 1979 (англ.)
FILL addr quan b -- Fill memory at the address with the specified quantity of bytes b.
Реализация
Описание и определение слова FILL в ядре ФОРТ-ЕС:
FILL A,U,C-> ЗАСЛАТЬ С В U БАЙТОВ ПО АДРЕСУ А 22 Экран номер 22 ( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) : FILL ( A,U,C->) SWAP ?DUP IF >R OVER C! DUP 1+ R> 1- CMOVE EXIT THEN 2DROP ;
В FORTH ИТЭФ слово FILL было примитивом, который частично опирался на код примитива DROP, вот их определения:
HEAD 204Q,'DRO',320Q,DROP ; DROP DRP: ADD SP, 2 NEXT ... HEAD 204Q,'FIL',314Q,FILL ; FILL POP AX ; Символ FLL: POP CX ; Счетчик символов CMP CX, 0 JLE DRP ; POP BX $REPE: MOV BYTE PTR [BX], AL INC BX LOOP $REPE NEXT
Ссылки
- Исходный текст слова FILL в Каллисто Классик 1.0
- См. также слова ERASE и BLANK
- Слово FILL в стандарте ANS Forth (англ.)
- Слово FILL в черновике Forth 200x (англ.)
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |