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

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

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

Текущая версия Ваш текст
Строка 1: Строка 1:
'''(LITERAL)''' — служебное слово [[Каллисто]].
'''(LITERAL)''' — стандартное слово [[Каллисто]].
(LITERAL)      ( −− x )                            Код периода выполнения для литерала.
Код периода выполнения для [[LITERAL|литерала]].
 
== Ввод слова (LITERAL) ==
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши {{ШГ→}}   [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ×|{{Серая клавиша|×}}]] {{ШГ←}} [[Клавиша -|{{Серая клавиша|−}}]]   [[Клавиша P|{{Синяя клавиша|P}}]] {{ШГ←}}
 
== История ==
Имя (LITERAL) взято у Броуди, соответствует духу [[Каллисто]].
 
=== LIT в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
LIT          ---  n                        C2,L0
        Within a colon-definition, LIT is automatically compiled before each
        16 bit literal number encountered in input text. Later execution of
        LIT causes the contents of the next dictionary address to be pushed
        to the stack.
 
== Реализация ==
Литералы в области данных — целые 16-битные числа со знаком.
 
В [[Каллисто|Каллисто 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) в ФОРТ-ЕС и 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] ''(англ.)''


Код периода выполнения для литерала.


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

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

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