0⟨
0< (нуля меньше) — стандартное слово Каллисто. Проверить, отрицательное ли число.
0< ( x -- f ) Проверка на отрицательность.
Сравнивает x с нулём и засылает в стек флаг «истинно» (f=-1), если x<0 и флаг «ложно» (f=0), если x≥0.
Ввод слова 0<[править]
В режиме NUM последовательно нажмите три клавиши 0 F ШГ→
0< и F0< в стандарте ANS Forth[править]
6.1.0250 0< "zero-less" CORE ( n -- flag ) flag - true, если и только если n - меньше нуля.
12.6.1.1440 F0< "f-zero-less-than" FLOATING ( -- flag ) ( F: r -- ) or ( r -- flag ) flag - true, если и только если r - меньше чем нуль.
История[править]
В 1968 году Чак Мур работал в Mohasco Industries, Inc (Amsterdam NY, англ.). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем IBM 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово 0<
0< в предыдущем стандарте Forth-83 (англ.)[править]
0< n -- flag 83 "zero-less" flag is true if n is less than zero (negative).
0< в стандарте Forth-79 (англ.)[править]
0< n -- flag 144 "zero-less" True if n is less than zero (negative)
0< в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]
0< n --- f L0 Leave a true flag if the number is less than zero (negative), otherwise leave a false flag.
Реализация[править]
Слово 0< в качестве флага «истинно» возвращает -1, что позволяет использовать результат f в логических операция AND, OR, XOR и NOT. Разумеется, при этом другие аргументы этих операций тоже должны использовать -1 в качестве флага «истинно». Все слова Каллисто, возвращающие флаги, используют в качестве флага «истинно» -1.
886 STT: 1 +/− PKM03 KGOTO9 ; [SP] := −1; NEXT 887 888 JZLESS: ; Обработчик 0< 889 PKRM03 FX>=0 STT 890 Cx PKM03 KGOTO9 891 892 ;#ZeroLess 893 ; 0< ( x −− f ) Проверить на отрицательность. 894 LZLESS: .DB 2 895 .TEXT "0<" ; ( x −− флаг ) 896 .DW LZGRET 897 ZLESS: .DW JZLESS
Реализации из SP-Forth 4.20:
CODE 0< ( n -- flag ) \ 94 \ flag "истина" тогда и только тогда, когда n меньше нуля. SAR EAX, # 1F RET END-CODE
CODE F0< \ * LEA EBP, -4 [EBP] MOV [EBP], EAX XOR EBX, EBX FTST FFREE ST FINCSTP FSTSW EAX SAHF JNB SHORT @@1 MOV EBX, # -1 @@1: MOV EAX, EBX RET END-CODE
Советская реализация[править]
Слово 0< в ФОРТ-ЕС было примитивом. Вот его описание и определение:
0< N->F F "ИСТИНА", ЕСЛИ N ОТРИЦАТЕЛЬНО 13 Экран номер 13 ( 31.03.86 AND OR XOR NOT 0= 0< ) CODE 0< ( N->F) RW1 RW1 SR, RW2 PULL, RW2 RW2 LTR, PUTRW1 BNM, RW1 0 BCTR, PUTRW1 B, END-CODE
В FORTH ИТЭФ слово 0< тоже было примитивом, вот его определение:
HEAD 202Q,'0',274Q,ZLESS ; 0< POP AX CMP AX, 0 JS TRUE ; Если минус JMP FALSE
Метки TRUE и FALSE см. в определении слова 0=
Ссылки[править]
- Исходный текст слова 0< в Каллисто Классик 1.0
- См. слова <, 0= и 0>
- См. также символ <
- Слова 0< (zero-less) и F0< (f-zero-less-than) в стандарте ANS Forth (англ.)
- Слова 0< (zero-less) и F0< (f-zero-less-than) в черновике Forth 200x (англ.)
- КОМПЬЮТЕР "ПРИНИМАЕТ РЕШЕНИЯ" в книге Л.Броуди «Начальный курс программирования на языке Форт»
- Decisions, Decisions… в книге Leo Brodie Starting Forth (англ.)
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |