+!
+! (прибавить, читается «плюс-присвоить») — стандартное слово Каллисто.
+! ( n a −− ) Увеличить на n содержимое ячейки с адресом a.
Добавляет к содержимому ячейки с адресом a число n. Подразумевается, что слово не пересекает границ областей памяти.
Ввод слова +!
В режиме NUM последовательно нажмите две клавиши + П
+! в стандарте ANS Forth
6.1.0130 +! "plus-store" CORE ( n|u a-addr -- ) Прибавляет n|u к числу одна-ячейка в a-addr.
См.: 3.3.3.1 Выравнивание адреса.
+! в предыдущем стандарте Forth-83 (англ.)
+! w1 addr -- 79 "plus-store" w1 is added to the w value at addr using the convention for + . This sum replaces the original value at addr.
+! в стандарте Forth-79 (англ.)
+! n addr -- 157 "plus-store" Add n to the 16-bit value at the address, by the convention given for + .
+! в fig-FORTH Release 1 glossary, май 1979 (англ.)
+! n addr --- L0 Add n to the value at the address. Pronounced "plus-store".
Реализация
У Баранова-Ноздрунова (стр. 22) и Юрия Семёнова (стр. 22) приводится следующее определение слова +!:
: +! ( N,A ---> ) ( в стеке n ADR ) ↑ ( n ADR ADR ) @ ( запись в стек содержимого адреса n ADR [ADR] ) rot ( ADR [ADR] n ) + ( приращение ADR [ADR]+n ) ↔ ( [ADR]+n ADR ) ! ; ( запись результата по адресу, хранящемуся стеке)
Слово +! в ФОРТ-ЕС было примитивом. Вот его описание и определение:
+! W,A -> УВЕЛИЧИТЬ ЗНАЧЕНИЕ ПО АДРЕСУ A НА W 17 Экран номер 17 ( 31.03,64 NEGATE ABS + - 1+ 1- 2+ 2- +! 1+! ) CODE +! ( W,A->) 14 LHRW12 BAL, RW2 RМASК NR, RW1 0 (, RW2 RFORTH AН, RW1 0 (, RW2 RFORTH SТН, 2РОР B, END-CODE
В FORTH ИТЭФ слово +! также было примитивом, вот его определение:
HEAD 202Q,'+',241Q,PSTOR ; +! POP BX POP CX ADD [BX], CX NEXT
Ссылки
- Исходный текст слова +! в Каллисто Классик 1.0
- См. слова +, ! и TOGGLE
- Слово +! (plus-store) в стандарте ANS Forth (англ.)
- Слово +! (plus-store) в черновике Forth 200x (англ.)
- Augmented assignment в английской Википедии (англ.)
- Variables, Constants, and Arrays в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |