Редактирование:
AND
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == В [[Каллисто]] для записи 32-битных целых чисел в [[Стек данных|десятичном стеке]] используется [[дополнительный код]] (''англ.'' two's complement). На входе слово AND принимает как 32-битные целые в [[Дополнительный код|дополнительном коде]], так и беззнаковые целые. Результат i всегда представлен в [[Дополнительный код|дополнительном коде]] и отрицателен, если старший бит в нём установлен. AND даёт правильный результат побитового «и» над числами любой разрядности, вплоть до 32, включая 16-, 8- и 1-битные числа. Если один из аргументов разрядности меньшей, чем 32, представлен в беззнаковом виде, результат i также выдаётся в беззнаковом виде — положительным числом или нулём. Если оба аргумента в [[Дополнительный код|дополнительном коде]], результат также будет в [[Дополнительный код|дополнительном коде]]. Последовательности слов {{Текст на индикаторе|65535, AND}} и {{Текст на индикаторе|255 AND}} позволяют выделить младшее 16-битное слово и младший байт числа, находящегося на вершине [[Стек данных|стека]]. Также слово AND можно использовать для логической операции «и» над флагами, если значение «истина» представляется числом -1. Все стандартные слова [[Каллисто]], возвращающие логическое значение (например, команды сравнения), используют это значение для возвращаемого флага «истина». В [[Каллисто|Каллисто 1.0]] слово AND реализовано с использованием команды ЭКВМ [[K AND]]: <pre> 1461 ;#AND 1462 ; AND ( n1 n2 −− i ) 32−битное логическое умножение (и). i := n1 & n2 1463 LSAND: .DB 3 1464 .TEXT "AND" ; ( a b −− a & b ) 1465 .DW LABS 1466 SAND: .DW JSAND ; 32−битное побитовое логическое умножение (И). 1467 JSAND: RM3 MB 1 M1 + MA M3 1468 CX M8 4 M0 1469 KRMB PGSB Norm32 MB 1470 KRMA PGSB Norm32 MA 1471 GOTO SANDIN 1472 SANDL: M8 RM1 RME ∗ M1 1473 RMA 1474 SANDIN: ENT RME / FANS <−> KINT MA ∗ − 1475 RMB ENT RME / FANS <−> KINT MB ∗ − 1476 KAND RM1 ∗ RM8 + 1477 FL0 SANDL 1478 PGSB Sign32 1479 PKM03 KGOTO9 1480 1481 ; Приводит 32−битное число в беззнаковый вид. 1482 Norm32: FX<0 N32A 1483 65536 FX^2 + ; FX^2 vs ENT ∗ 1484 N32A: RTN … 1506 ; Преобразование 32−битного беззнакового в 32−битное знаковое. 1507 Sign32: 1508 32768 ENT 65536 ∗ ; 2 147 483 648 1509 − FX<0 S32Fix 1510 FANS + RTN ; Восстановить исходное число 1511 S32Fix: FANS − RTN ; Преобразовать </pre> Реализация из SP-Forth 4.20: <pre> CODE AND ( x1 x2 -- x3 ) \ 94 \ x3 - побитовое "И" x1 и x2. AND EAX, [EBP] LEA EBP, 4 [EBP] RET END-CODE </pre> === Советская реализация === Слово AND в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: <PRE> AND W1,W2->W3 ПОРАЗРЯДНОЕ ЛОГИЧЕСКОЕ "И" 13 Экран номер 13 ( 31.03.86 AND OR XOR NOT 0= 0< ) CODE AND ( W1,W2->W3) 14 LHRW12 BAL, RW1 RW2 NR, POPPUT1 B, END-CODE </PRE> В FORTH ИТЭФ слово AND также было [[примитив]]ом, вот его определение: <PRE> HEAD 203Q,'AN',304Q,$AND ; AND POP AX POP CX AND AX, CX ENDA: PUSH AX NEXT </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице