Редактирование: TRUE

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''TRUE''' («истина») — стандартная константа [[Каллисто]].
'''TRUE''' («истина») — стандартная константа [[Каллисто]]. Константа -1.
  TRUE          ( -- -1 )                      Истина. Число -1.
  TRUE          ( -- -1 )                      Истина. Число -1.
[[Файл:CallistoLogic.png|thumb|right|264px|Пример работы слова TRUE]]
[[Примитив]] TRUE кладёт на [[Стек данных|стек]] число -1.
[[Примитив]] TRUE кладёт на [[Стек данных|стек]] число -1. Хотя это стандартное значение для истины, надо помнить, что истиной в [[Каллисто]] также считается любое число, отличное от нуля.


== Ввод слова TRUE ==
== Ввод слова TRUE ==
В [[Режим ЛАТ|режиме ЛАТ]] нажмите [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 3|{{Серая клавиша|3}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
В [[Режим ЛАТ|режиме ЛАТ]] нажмите [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша 3|{{Серая клавиша|3}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
== Детали реализации ==
Слово TRUE названо константой по его действию. В [[Каллисто]] оно не имеет отношения к порождающему слову [[CONSTANT]] и является [[примитив]]ом. Такой подход делает исполняемый код короче и быстрее, а также ускоряет время компиляции программы — существенный плюс для [[Каллисто]].


== TRUE в стандарте ANS Forth ==
== TRUE в стандарте ANS Forth ==
Строка 21: Строка 23:


== История ==
== История ==
Истина стала кодироваться числом -1 в 1983 году, в этом виде и вошло в [[Каллисто]]. Само слово TRUE стало стандартным для Форта в 1994 году.
Значение TRUE стало -1 в Форте-83, в этом виде и вошло в [[Каллисто]]. Если на [[Каллисто]] переносятся более древние программы, надо учитывать, что значение истины тогда равнялось единице.
 
Если на [[Каллисто]] переносятся более древние программы, надо учитывать, что до 1983 года значение истины в Форте равнялось [[Слово 1|единице]]. Следы этого старого соглашения остались в [[Каллисто|Каллисто 1.0]] — см. слова [[DIGIT]], [[FINDN]], [[(FIND)]].


=== Значение TRUE в Форте-83 ===
=== Значение TRUE в Форте-83 ===
Строка 42: Строка 42:


== Реализация ==
== Реализация ==
Слово 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}}
* {{Исходник|True|TRUE}}
* См. слова [[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.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 ''(англ.)''
* Слово [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]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/TRUE