CMOVE〉: различия между версиями
Перейти к навигации
Перейти к поиску
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 26: | Строка 26: | ||
100 DUP CHAR+ SWAP 3 CMOVE>, строка по адресу 100 - "DDDD". | 100 DUP CHAR+ SWAP 3 CMOVE>, строка по адресу 100 - "DDDD". | ||
== CMOVE> в предыдущем стандарте Forth-83 (англ.) == | == CMOVE> в предыдущем стандарте Forth-83 (англ.) == | ||
Строка 35: | Строка 34: | ||
u bytes. If u is zero nothing is moved. (Useful for | u bytes. If u is zero nothing is moved. (Useful for | ||
sliding a string towards higher addresses). | sliding a string towards higher addresses). | ||
== <CMOVE в стандарте Forth-79 (англ.) == | == <CMOVE в стандарте Forth-79 (англ.) == | ||
Строка 41: | Строка 39: | ||
Copy n bytes beginning at addr1 to addr2. The move proceeds | Copy n bytes beginning at addr1 to addr2. The move proceeds | ||
within the bytes from high memory toward low memory. | within the bytes from high memory toward low memory. | ||
== История == | == История == | ||
В 1983 году слово <CMOVE было переименовано в CMOVE> — лучше отражающее направление и способ перемещения участка памяти. | В 1983 году слово <CMOVE было переименовано в CMOVE> — лучше отражающее направление и способ перемещения участка памяти. | ||
== Ссылки == | == Ссылки == | ||
Строка 55: | Строка 51: | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | |||
[[Категория:Работа с памятью Каллисто]] | [[Категория:Работа с памятью Каллисто]] | ||
[[Категория:Слова Каллисто без стековых диаграмм]] | [[Категория:Слова Каллисто без стековых диаграмм]] |
Версия от 14:36, 19 марта 2016
CMOVE> — стандартное слово Каллисто.
Ввод слова CMOVE>
В режиме ЛАТ последовательно нажмите клавиши С/П ÷ 5 ↔ ИП P F ИП
Эти нажатия оставляют клавиатуру в режиме NUM.
CMOVE> в стандарте ANS Forth
17.6.1.0920 CMOVE> "c-move-up" STRING ( c-addr1 c-addr2 u -- ) Если u больше чем нуль, копирует u последовательных символов из области данных начинающейся с c-addr1 в область, начинающуюся с c- addr2, выполняя посимвольно с наибольших адресов к наименьшим.
Отличие с: 17.6.1.0910 CMOVE.
A.17.6.1.0920 CMOVE> Если c-addr1 находится в пределах области назначения, (то есть, когда c-addr1 больше чем или равно c-addr2 и c-addr2 - меньше чем количество c-addr1 u CHARS +), происходит размножение памяти.
Типичное использование: Предположите символьную строку по адресу 100: "ABCD". Тогда после
100 DUP CHAR+ SWAP 3 CMOVE>, строка по адресу 100 - "DDDD".
CMOVE> в предыдущем стандарте Forth-83 (англ.)
CMOVE> addr1 addr2 u -- 83 "c-move-up" Move the u bytes at address addr1 to addr2. The move begins by moving the byte at (addr1 plus u minus 1) to (addr2 plus u minus 1) and proceeds to successively lower addresses for u bytes. If u is zero nothing is moved. (Useful for sliding a string towards higher addresses).
<CMOVE в стандарте Forth-79 (англ.)
<CMOVE addr1 addr2 n -- "reverse-c-move" Copy n bytes beginning at addr1 to addr2. The move proceeds within the bytes from high memory toward low memory.
История
В 1983 году слово <CMOVE было переименовано в CMOVE> — лучше отражающее направление и способ перемещения участка памяти.
Ссылки
- См. также слова CMOVE FILL ERASE BLANK
- Слово CMOVE> (c-move-up) и комментарий к нему в стандарте ANS Forth (англ.)
- Слово CMOVE> (c-move-up) и комментарий к нему в черновике Forth 200x (англ.)
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |