Слово =
Перейти к навигации
Перейти к поиску
= (равно) — стандартное слово Каллисто.
= ( x1 x2 -- f ) Проверка на равенство.
Сравнивает x1 и x2. В стек засылается «истина» (f=−1), если x1=x2 и «ложь» (f=0), если x1≠x2.
Ввод слова =
В режиме NUM последовательно нажмите две клавиши F ШГ←
= в стандарте ANS Forth
6.1.0530 = "equals" CORE ( x1 x2 -- flag ) flag - true, если и только если x1 - побитно равно x2.
История
= в предыдущем стандарте Forth-83 (англ.)
= w1 w2 -- flag 83 "equals" flag is true if w1 is equal to w2.
= в стандарте Forth-79 (англ.)
= n1 n2 -- flag 173 "equals" True if n1 is equal to n2.
= в fig-FORTH Release 1 glossary, май 1979 (англ.)
= n1 n2 --- f L0 Leave a true flag if n1=n2; otherwise leave a false flag.
Реализация
В Каллисто 1.0 примитив = вычитает два числа на вершине стека и сравнивает результат с нулём:
886 STT: 1 +/− PKM03 KGOTO9 ; [SP] := −1; NEXT … 899 ;#Equal 900 ; = ( y x −− f ) Равно. Проверить на равенство. 901 ; В стандарте Форта слово = сравнивает значения на вершине стека побитово. 902 LEQUAL: .DB 1 903 .TEXT "=" ; ( a b −− флаг ) 904 .DW LZLESS 905 EQUAL: .DW JEQUAL 906 JEQUAL: RM3 M8 1 + M3 907 PKRM03 KRM8 − FX!=0 STT 908 Cx PKM03 KGOTO9
Реализации из SP-Forth 4.20:
\ ================================================================ \ Сравнения CODE = ( x1 x2 -- flag ) \ 94 \ flag "истина" тогда и только тогда, когда x1 побитно равен x2. XOR EAX, [EBP] SUB EAX, # 1 SBB EAX, EAX LEA EBP, 4 [EBP] RET END-CODE
CODE F= \ * LEA EBP, -4 [EBP] MOV [EBP], EAX XOR EBX, EBX FCOMPP FSTSW EAX SAHF JNE SHORT @@1 MOV EBX, # -1 @@1: MOV EAX, EBX RET END-CODE
Советская реализация
У Баранова-Ноздрунова приводится следующее определение слова = (стр. 26):
: = ( A,B ---> A = B ) - 0= ;
Описание и определение слова = в ядре ФОРТ-ЕС:
= W1,W2->F F НЕ НУЛЬ, ЕСЛИ W1 РАВНО W2 19 Экран номер 19 ( 31.03.86 CPАBHEHИЯ И РАЗРЕШЕНИЯ В ШИТОМ КОДЕ) : = ( W1,W2->F) - 0= ;
В FORTH ИТЭФ слово = тоже было примитивом, вот его определение:
HEAD 201Q,,275Q,EQUAL ; = POP AX POP CX CMP CX, AX JE TRUE JMP FALSE
Метки TRUE и FALSE см. в определении слова 0=
Ссылки
- Исходный текст слова = в Каллисто Классик 1.0
- См. слова 0=, < и >
- См. также символ =
- Слово = (equals) в стандарте ANS Forth (англ.)
- Слово = (equals) в черновике Forth 200x (англ.)
- КОМПЬЮТЕР "ПРИНИМАЕТ РЕШЕНИЯ" в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Decisions, Decisions… в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |