Редактирование:
OR
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == В [[Каллисто]] для записи 32-битных целых чисел в [[Стек данных|десятичном стеке]] используется [[дополнительный код]] (''англ.'' two's complement). На входе слово OR принимает как 32-битные целые в [[Дополнительный код|дополнительном коде]], так и беззнаковые целые. Результат i всегда представлен в [[Дополнительный код|дополнительном коде]] и отрицателен, если старший бит в нём установлен. OR даёт правильный результат побитового «или» над числами любой разрядности, меньшей 32, включая 16-, 8- и 1-битные числа. Если оба аргумента разрядности меньше, чем 32, представлены в [[Дополнительный код|дополнительном коде]], результат i также выдаётся в [[Дополнительный код|дополнительном коде]]. Если оба аргумента представлены в беззнаковом виде, результат также будет в беззнаковом виде — положительным числом или нулём. Также слово OR можно использовать для логической операции «или» над флагами, если значение «истина» представляется числом -1. Все стандартные слова [[Каллисто]], возвращающие логическое значение (например, команды сравнения), используют это значение для возвращаемого флага «истина». В [[Каллисто|Каллисто 1.0]] слово OR реализовано с использованием команды ЭКВМ [[K OR]]: <pre> 1481 ; Приводит 32−битное число в беззнаковый вид. 1482 Norm32: FX<0 N32A 1483 65536 FX^2 + ; FX^2 vs ENT ∗ 1484 N32A: RTN 1485 1486 ;#OR 1487 ; OR ( n1 n2 −− i ) 32−битное логическое сложение (или). i := n1 ∨ n2 1488 LSOR: .DB 2 1489 .TEXT "OR" ; ( a b −− a OR b ) 1490 .DW LSAND ; 32−битное побитовое логическое сложение (ИЛИ). 1491 SOR: .DW JSOR 1492 JSOR: RM3 MB 1 M1 + MA M3 1493 CX M8 4 M0 1494 KRMB GSB Norm32 MB 1495 KRMA GSB Norm32 MA 1496 GOTO SORIN 1497 SORL: M8 RM1 RME ∗ M1 1498 RMA 1499 SORIN: ENT RME / FANS <−> KINT MA ∗ − 1500 RMB ENT RME / FANS <−> KINT MB ∗ − 1501 KOR RM1 ∗ RM8 + 1502 PFL0 SORL 1503 GSB Sign32 1504 PKM03 KGOTO9 1505 ; 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 OR ( x1 x2 -- x3 ) \ 94 \ x3 - побитовое "ИЛИ" x1 и x2. OR EAX, [EBP] LEA EBP, 4 [EBP] RET END-CODE </pre> === Советская реализация === Слово OR в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение: <PRE> OR W1,W2->W3 ПОРАЗРЯДНОЕ ЛОГИЧЕСКОЕ "ИЛИ" 13 Экран номер 13 ( 31.03.86 AND OR XOR NOT 0= 0< ) CODE OR ( W1,W2->W3) 14 LHRW12 BAL, RW1 RW2 OR, POPPUT1 B, END-CODE </PRE> В FORTH ИТЭФ слово OR также было [[примитив]]ом, вот его определение: <PRE> HEAD 203Q,'AN',304Q,$AND ; AND POP AX POP CX AND AX, CX ENDA: PUSH AX NEXT HEAD 202Q,'O',322Q,$OR ; OR POP AX POP CX OR AX, CX JMP ENDA </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице