ERASE: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) (→Ссылки) |
AtH (обсуждение | вклад) |
||
(не показаны 22 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
'''ERASE''' (стереть) — стандартное слово [[Каллисто]]. | '''ERASE''' (стереть) — стандартное слово [[Каллисто]]. Обнулить массив. | ||
ERASE ( a u −− ) Стереть. Записать u нулей в память, начиная с адреса a. | |||
Слово ERASE записывает u нулевых байтов в память, начиная с адреса a. | |||
== Ввод слова ERASE == | |||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ×|{{Серая клавиша|×}}]] {{ШГ←}} [[Клавиша 1|{{Серая клавиша|1}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | |||
== ERASE в стандарте ANS Forth == | == ERASE в стандарте ANS Forth == | ||
Строка 10: | Строка 12: | ||
последовательных адресуемых элементов памяти, начинающихся с addr. | последовательных адресуемых элементов памяти, начинающихся с addr. | ||
== История == | |||
Слово ERASE пришло в [[Каллисто]] из Форта, где оно является древним и стабильным. В существующем ныне виде слово ERASE известно с 1979 года и входит во все стандарты. | |||
== ERASE в предыдущем стандарте Forth-83 (англ.) == | === ERASE в предыдущем стандарте Forth-83 (англ.) === | ||
ERASE addr u -- 79 | ERASE addr u -- 79 | ||
u bytes of memory beginning at addr are set to zero. No | u bytes of memory beginning at addr are set to zero. No | ||
action is taken if u is zero. | action is taken if u is zero. | ||
=== ERASE в стандарте Forth-79 (англ.) === | |||
== ERASE в стандарте Forth-79 (англ.) == | |||
ERASE addr n -- 182 | ERASE addr n -- 182 | ||
Fill an area of memory over n bytes with zeros, starting at | Fill an area of memory over n bytes with zeros, starting at | ||
addr. If n is zero or less, take no action. | addr. If n is zero or less, take no action. | ||
=== ERASE в fig-FORTH Release 1 glossary, май 1979 (англ.) === | |||
== ERASE в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
ERASE addr n -- | ERASE addr n -- | ||
Clear a region of memory to zero from addr over n addresses. | Clear a region of memory to zero from addr over n addresses. | ||
== Реализация == | |||
<pre> | |||
2013 JFILL2: M8 1 + MA 1 + M3 | |||
2014 KRM8 M0 +/− KX<09 ; Счётчик литер | |||
2015 KRMA 1 EE 4 − KX>=09 1 − M5 RMB | |||
2016 FILL1: KM5 FL0 FILL1 | |||
2017 KGOTO9 | |||
… | |||
2021 JERASE: CX ; Обработчик ERASE | |||
2022 JJFILL: MB RM3 GOTO JFILL2 | |||
2023 | |||
2024 ;#ERASE | |||
2025 ; ERASE ( a U −− ) Стереть. Записать U нулей в память, начиная с адреса a. | |||
2026 LERASE: .DB 5 | |||
2027 .TEXT "ERASE" ; ( где сколько −− ) | |||
2028 .DW LFILL | |||
2029 ERASE: .DW JERASE ; Обнулить массив. | |||
</pre> | |||
Реализация из SP-Forth 4.20: | |||
<pre> | |||
: ERASE ( addr u -- ) \ 94 CORE EXT | |||
\ Если u больше нуля, очистить все биты каждого из u байт памяти, | |||
\ начиная с адреса addr. | |||
0 FILL | |||
; | |||
</pre> | |||
== | === Советская реализация === | ||
Юрий Семёнов приводит (стр. 26) следующее | Юрий Семёнов приводит (стр. 26) следующее определение ERASE через более общее слово [[FILL]]: | ||
: ERASE 0 FILL ; | : ERASE 0 FILL ; | ||
Описание и определение слова ERASE в ядре ФОРТ-ЕС: | |||
<PRE> | |||
ERASE + A,U-> ЗАСЛАТЬ НУЛИ В U БАЙТОВ ПО АДРЕСУ А 22 | |||
Экран номер 22 | |||
( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) | |||
: ERASE ( A,U-> ) 0 FILL ; | |||
</PRE> | |||
В FORTH ИТЭФ слово ERASE было [[примитив]]ом, код которого использовал код [[примитив]]а [[FILL]], вот их определения: | |||
<PRE> | |||
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 | |||
HEAD 205Q,'ERAS',305Q,ERASE ; ERASE | |||
SUB AX, AX | |||
JMP FLL | |||
</PRE> | |||
== Ссылки == | == Ссылки == | ||
* {{Исходник|ERASE|ERASE}} | |||
* См. также слова [[FILL]] [[BLANK]] | * См. также слова [[FILL]] [[BLANK]] | ||
* [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.1350 | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.1350 ERASE] в стандарте ANS Forth ''(англ.)'' | ||
* [http://www. | * Слово [http://forth-standard.org/standard/core/ERASE ERASE] в черновике Forth 200x ''(англ.)'' | ||
* [http://www.forth.com/starting-forth/sf8/sf8.html Variables, Constants, and Arrays] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |||
Строка 42: | Строка 99: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | |||
[[Категория:Работа с памятью Каллисто]] | [[Категория:Работа с памятью Каллисто]] | ||
[[Категория:Стандартные слова]] | |||
[[Категория:1994 CORE EXT]] | |||
[[Категория:2012 CORE EXT]] |
Версия от 17:19, 10 ноября 2017
ERASE (стереть) — стандартное слово Каллисто. Обнулить массив.
ERASE ( a u −− ) Стереть. Записать u нулей в память, начиная с адреса a.
Слово ERASE записывает u нулевых байтов в память, начиная с адреса a.
Ввод слова ERASE
В режиме ЛАТ последовательно нажмите клавиши ИП × ШГ← 1 ИП
ERASE в стандарте ANS Forth
6.2.1350 ERASE CORE EXT ( addr u -- ) Если u больше нуля, очистить все биты в каждом из u последовательных адресуемых элементов памяти, начинающихся с addr.
История
Слово ERASE пришло в Каллисто из Форта, где оно является древним и стабильным. В существующем ныне виде слово ERASE известно с 1979 года и входит во все стандарты.
ERASE в предыдущем стандарте Forth-83 (англ.)
ERASE addr u -- 79 u bytes of memory beginning at addr are set to zero. No action is taken if u is zero.
ERASE в стандарте Forth-79 (англ.)
ERASE addr n -- 182 Fill an area of memory over n bytes with zeros, starting at addr. If n is zero or less, take no action.
ERASE в fig-FORTH Release 1 glossary, май 1979 (англ.)
ERASE addr n -- Clear a region of memory to zero from addr over n addresses.
Реализация
2013 JFILL2: M8 1 + MA 1 + M3 2014 KRM8 M0 +/− KX<09 ; Счётчик литер 2015 KRMA 1 EE 4 − KX>=09 1 − M5 RMB 2016 FILL1: KM5 FL0 FILL1 2017 KGOTO9 … 2021 JERASE: CX ; Обработчик ERASE 2022 JJFILL: MB RM3 GOTO JFILL2 2023 2024 ;#ERASE 2025 ; ERASE ( a U −− ) Стереть. Записать U нулей в память, начиная с адреса a. 2026 LERASE: .DB 5 2027 .TEXT "ERASE" ; ( где сколько −− ) 2028 .DW LFILL 2029 ERASE: .DW JERASE ; Обнулить массив.
Реализация из SP-Forth 4.20:
: ERASE ( addr u -- ) \ 94 CORE EXT \ Если u больше нуля, очистить все биты каждого из u байт памяти, \ начиная с адреса addr. 0 FILL ;
Советская реализация
Юрий Семёнов приводит (стр. 26) следующее определение ERASE через более общее слово FILL:
: ERASE 0 FILL ;
Описание и определение слова ERASE в ядре ФОРТ-ЕС:
ERASE + A,U-> ЗАСЛАТЬ НУЛИ В U БАЙТОВ ПО АДРЕСУ А 22 Экран номер 22 ( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) : ERASE ( A,U-> ) 0 FILL ;
В FORTH ИТЭФ слово ERASE было примитивом, код которого использовал код примитива FILL, вот их определения:
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 HEAD 205Q,'ERAS',305Q,ERASE ; ERASE SUB AX, AX JMP FLL
Ссылки
- Исходный текст слова ERASE в Каллисто Классик 1.0
- См. также слова FILL BLANK
- Слово ERASE в стандарте ANS Forth (англ.)
- Слово ERASE в черновике Forth 200x (англ.)
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |