Редактирование: (LITERAL)

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

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

Текущая версия Ваш текст
Строка 1: Строка 1:
'''(LITERAL)''' — служебное слово [[Каллисто]].
'''(LITERAL)''' — стандартное слово [[Каллисто]].
(LITERAL)      ( −− x )                            Код периода выполнения для литерала.
 
Код периода выполнения для [[LITERAL|литерала]].
Код периода выполнения для литерала.


== Ввод слова (LITERAL) ==
== Ввод слова (LITERAL) ==
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши {{ШГ→}}   [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ×|{{Серая клавиша|×}}]] {{ШГ←}} [[Клавиша -|{{Серая клавиша|−}}]]   [[Клавиша P|{{Синяя клавиша|P}}]] {{ШГ←}}
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша ШГ вправо|{{Чёрная клавиша|ШГ→}}]]   [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша -|{{Серая клавиша|−}}]]   [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]]


== История ==
== LIT в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
Имя (LITERAL) взято у Броуди, соответствует духу [[Каллисто]].
 
=== LIT в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
  LIT          ---  n                        C2,L0
  LIT          ---  n                        C2,L0
         Within a colon-definition, LIT is automatically compiled before each
         Within a colon-definition, LIT is automatically compiled before each
Строка 16: Строка 13:
         to the stack.
         to the stack.


== Реализация ==
== Реализация (LITERAL) ==
Литералы в области данных — целые 16-битные числа со знаком.
У Баранова-Ноздрунова приводится следующее описание слова (LITERAL) (стр. 53):
 
В [[Каллисто|Каллисто 1.0]] тело словарной статьи для (LITERAL) содержит два «подпольных» [[CFA|токена]] LITP и LITB, позволяющие использовать беззнаковые 16- и 8-битные литералы в [[Память программ|памяти программ]]:
<pre>
586 ;#xLITERAL
587 ; (LITERAL)        ( −− x )                            Код периода выполнения для литерала.
588 ; В шитом коде за (LITERAL) идёт двухбайтовое целое со знаком в шестнадцатеричном формате.
589 LLIT:          .DB    9
590                .TEXT  "(LITERAL)"
591                .DW    LQBREAK
592 LITD:          .DW    JLITD
593 JLITD:          KRM6 RME ∗ KRM6
594 PLUSKM3M:      +                              ; Код повторно используется обработчиком CONSTANT
595                KM3                            ; PUSH MEMW[RI++]
596                32768 − KX>=09                  ; Если число положительное, NEXT
597                FANS − PKM03  KGOTO9            ; Обработка отрицательных чисел, NEXT
598 LITP:          .DW    JLITP                  ; Литералы в области памяти программ
599 JLITP:          PPRM9044 RME ∗ PPRM9044 +      ; Все литералы в области программ положительные!
600                KM3  KGOTO9                    ; PUSH MEMW[RI++]
601 LITB:          .DW    JLITB
602 JLITB:          PPRM9044 KM3  KGOTO9            ; Специальный байтовый литерал для памяти программ.
</pre>
Реализации из SP-Forth 4.20:
<pre>
: TC-LIT,
  S" DUP" TC-FINDOUT INLINE,
  OPT_INIT
  SetOP 0B8 C,  , OPT  \ MOV EAX, #
  OPT_CLOSE ;
</pre>
<pre>
: LIT, ( W -> )
  ['] DUP  INLINE,
  OPT_INIT
  SetOP 0B8 C,  , OPT  \ MOV EAX, #
  OPT_CLOSE
;
</pre>
 
=== Советская реализация ===
У Баранова-Ноздрунова приводится следующее определение слова (LITERAL) (стр. 53):
   : (LITERAL)  ( ---> A )    I  @  R>  2+  >R  ;
   : (LITERAL)  ( ---> A )    I  @  R>  2+  >R  ;
Слово (LITERAL) в ФОРТ-ЕС и FORTH ИТЭФ было [[примитив]]ом и называлось LIT
Вот его описание и определение из ФОРТ-ЕС:
<PRE>
LIT      *K ->W ПОМЕСТИТЬ НА СТЕК СЛЕДУЮЩИЙ КОД                23
                    Экран номер 23
( 31.03.84    LIT 2LIT LITERAL 2LITERAL SPACE SPACES )
CODE LIT  ( ->W )      RW1 0 (, RI RFORTH LH,
RI RTWO AR,  PUSHRW1 B,  END-CODE
</PRE>
Вот его определение из FORTH ИТЭФ:
<PRE>
            HEAD    203Q,'LI',324Q,LIT                  ; LIT
            LODSW
            PUSH  AX
            NEXT
</PRE>
== Ссылки ==
* {{Исходник|xLITERAL|(LITERAL)}}
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\11.RASSIRENIE%20KOMPILATORA:%20OPREDELAUSIE%20I%20KOMPILIRUUSIE%20SLOWA РАСШИРЕНИЕ КОМПИЛЯТОРА: ОПРЕДЕЛЯЮЩИЕ И КОМПИЛИРУЮЩИЕ СЛОВА] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf11/sf11.html Extending the Compiler] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




Строка 91: Строка 22:
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Слова Каллисто без стековых диаграмм]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

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

Отменить Справка по редактированию (в новом окне)