Редактирование: TOGGLE

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''TOGGLE''' — архаичное слово [[Каллисто]].
'''TOGGLE''' — стандартное слово [[Каллисто]].
TOGGLE        ( a c −− )                          Изменить байт с адресом a по xor−маске c.
При обращении adr c TOGGLE извлекается байт из ячейки с адресом adr, выполняется операция [[XOR]] (Исключающее ИЛИ) над этим байтом и байтом c, а результат записывается снова в ячейку с адресом adr.


У TOGGLE стандартный, но необычный порядок операндов. Будьте внимательны!
При обращении ADR b TOGGLE извлекается байт из ячейки с адресом ADR, выполняется операция XOR (Исключающее ИЛИ) над этим байтом и байтом b, а результат записывается снова в ячейку с адресом ADR.


== Ввод слова TOGGLE ==
== Ввод слова TOGGLE ==
Строка 13: Строка 11:


== История ==
== История ==
Обратите внимание на необычный для [[Каллисто]] порядок аргументов у слова TOGGLE. Он противоречит принятой практике программирования на Форте, например порядку аргументов стандартного слова [[+!]].
Обратите внимание на необычный для [[Каллисто]] порядок аргументов у слова TOGGLE.
 
Возможно, именно по этой причине архаичное слово TOGGLE не вошло ни в один из стандартов.
 
== Реализация ==
<pre>
2135 ;#TOGGLE
2136 ; TOGGLE          ( a c −− )                          Изменить байт с адресом a по xor−маске c.
2137 ; У TOGGLE стандартный, но необычный порядок операндов. Будьте внимательны!
2138 LTOGL:          .DB    6
2139                .TEXT  "TOGGLE"
2140                .DW    LMMSTOR
2141 TOGL:          .DW    JTOGL
2142 JTOGL:          RM3 M8  1 + MA  1 + M3
2143                KRMA 1 EE 4 −  KX>=09          ; Не менять ничего в памяти программ
2144                MA KRM8 KRMA KXOR KMA
2145                KGOTO9
</pre>
 
=== Советская реализация ===
В FORTH ИТЭФ слово TOGGLE также было [[примитив]]ом и называлось TOGL
 
Вот его определение:
<PRE>
            HEAD    204Q,'TOG',314Q.TOGL                ; TOGGLE
  ; адр-байта маска =>XOR в байт памяти
            POP  CX        ; Маска
            POP  BX
            XOR  BYTE PTR [BX],CL
            NEXT
</PRE>


== Ссылки ==
== Ссылки ==
* {{Исходник|TOGGLE|TOGGLE}}
* См. слова [[Слово XOR|XOR]], [[Слово !|!]] и [[+!]]
* См. слова [[XOR]], [[Слово !|!]] и [[+!]]




Строка 55: Строка 22:
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Работа с памятью Каллисто]]
[[Категория:Работа с памятью Каллисто]]
[[Категория:Архаичные слова]]
[[Категория:Слова Каллисто без стековых диаграмм]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)