Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''TRUE''' («истина») — стандартная константа [[Каллисто]]. | | '''3''' (три) — встроенное слово [[Каллисто]]. Константа три. |
| TRUE ( -- -1 ) Истина. Число -1. | | 3 ( -- 3 ) Число 3. |
| [[Файл:CallistoLogic.png|thumb|right|264px|Пример работы слова TRUE]]
| | [[Примитив]] 3 кладёт на [[Стек данных|стек]] число 3. |
| [[Примитив]] TRUE кладёт на [[Стек данных|стек]] число -1. Хотя это стандартное значение для истины, надо помнить, что истиной в [[Каллисто]] также считается любое число, отличное от нуля. | |
|
| |
|
| == Ввод слова TRUE == | | == Ввод слова 3 == |
| В [[Режим ЛАТ|режиме ЛАТ]] нажмите [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 3|{{Серая клавиша|3}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | | В [[Режим NUM|режиме NUM]] нажмите [[Клавиша 3|белую клавишу {{Серая клавиша|3}}]] |
|
| |
|
| == TRUE в стандарте ANS Forth == | | == Детали реализации == |
| <PRE>
| | Слово 3 названо константой по его действию. В [[Каллисто]] оно не имеет отношения к порождающему слову [[CONSTANT]] и является [[примитив]]ом. |
| 6.2.2298 TRUE CORE EXT
| |
| ( -- true )
| |
| Возвращает флаг true, значение одна-ячейка со всеми установленными
| |
| битами.
| |
| | |
| См.: 3.1.3.1 Флаги.
| |
| | |
| A.6.2.2298 TRUE
| |
| TRUE эквивалентно фразе 0 0=.
| |
| </PRE>
| |
|
| |
|
| == История == | | == История == |
| Истина стала кодироваться числом -1 в 1983 году, в этом виде и вошло в [[Каллисто]]. Само слово TRUE стало стандартным для Форта в 1994 году.
| | Ещё в раннем Форте было подмечено, что некоторые числа используются в программах чаще других. Чтобы сделать исполняемый код короче и быстрее, под такие числа были заведены отдельные слова — засылающие их в стек в обход механизма литералов. Это также ускоряет время компиляции программы, существенный плюс для [[Каллисто]]. |
| | |
| Если на [[Каллисто]] переносятся более древние программы, надо учитывать, что до 1983 года значение истины в Форте равнялось [[Слово 1|единице]]. Следы этого старого соглашения остались в [[Каллисто|Каллисто 1.0]] — см. слова [[DIGIT]], [[FINDN]], [[(FIND)]].
| |
| | |
| === Значение TRUE в Форте-83 ===
| |
| true
| |
| A non-zero value represents the true state of a flag. Any
| |
| non-zero value will be accepted by a standard word as
| |
| 'true'; all standard words return a 16-bit value with all
| |
| bits set to one when returning a 'true' flag.
| |
| | |
| === Значение TRUE в Форте-79 ===
| |
| <PRE>
| |
| true
| |
| | |
| A non-zero value represents the true condition flag. Any non-
| |
| zero value will be accepted by a standard word as 'true'; all
| |
| standard words return one when leaving a ' true' flag.
| |
| </PRE>
| |
|
| |
|
| == Реализация == | | == Реализация == |
| Слово TRUE названо константой по его действию. В [[Каллисто|Каллисто 1.0]] оно не имеет отношения к порождающему слову [[CONSTANT]] и является [[примитив]]ом.
| | Определение константы 3 в FORTH ИТЭФ: |
| | |
| Слово TRUE занимает меньше места в [[Шитый код|шитом коде]], компилируется и исполняется быстрее, чем [[LITERAL|литерал]] -1. Поэтому его удобно использовать вместо числа -1, например TRUE p [[+!]] уменьшает [[VARIABLE|переменную]] p на единицу.
| |
| <pre>
| |
| 2667 ;#TRUE
| |
| 2668 ; TRUE ( −− −1 ) Истина. Число −1.
| |
| 2669 LTRUE: .DB 4
| |
| 2670 .TEXT "TRUE"
| |
| 2671 .DW LTWO
| |
| 2672 TRUE: .DW JTRUE
| |
| 2673 JTRUE: 1 +/− KM3 KGOTO9
| |
| </pre>
| |
| Реализация из SP-Forth 4.20:
| |
| <pre>
| |
| -1 CONSTANT TRUE ( -- true ) \ 94 CORE EXT
| |
| \ Вернуть флаг "истина", ячейку со всеми установленными битами.
| |
| </pre>
| |
| | |
| === Советская реализация ===
| |
| Формально слова TRUE в FORTH ИТЭФ не было, но в его исходном тексте есть такие строчки:
| |
| <PRE> | | <PRE> |
| ; ** Стандартные слова **
| | HEAD 201Q,,263Q,THREE,$CON ; 3 |
| ; ** Условные операторы **
| | DW 3 |
| | |
| HEAD 202Q,'0',275Q,ZEQU ; 0=
| |
| POP AX
| |
| CMP AX, 0
| |
| JE TRUE
| |
| FALSE: SUB AX, AX
| |
| PUT: PUSH AX
| |
| NEXT
| |
| TRUE: MOV AX, 1
| |
| JMP PUT
| |
| </PRE> | | </PRE> |
|
| |
| ФОРТ-ЕС использовал -1 в качестве булевского значения ИСТИНА.
| |
|
| |
|
| == Ссылки == | | == Ссылки == |
| * {{Исходник|True|TRUE}} | | * {{Исходник|Three|3}} |
| * См. слова [[FALSE]], [[Слово 1|1]] и [[Слово 2|2]]
| |
| * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.2.2298 TRUE] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.2.2298 комментарий к нему] в стандарте ANS Forth ''(англ.)''
| |
| * Слово [http://forth-standard.org/standard/core/TRUE TRUE] и [http://forth-standard.org/standard/rationale#rat:core:TRUE комментарий к нему] в черновике Forth 200x ''(англ.)''
| |
|
| |
|
|
| |
|
| | {{нет иллюстраций}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]] | | [[Категория:Примитивы]] |
| [[Категория:Стандартные константы Каллисто]] | | [[Категория:Стандартные константы Каллисто]] |
| [[Категория:Стандартные слова]]
| |
| [[Категория:1994 CORE EXT]]
| |
| [[Категория:2012 CORE EXT]]
| |