(LITERAL): различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
 
(не показано 13 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''(LITERAL)''' — стандартное слово [[Каллисто]].
'''(LITERAL)''' — служебное слово [[Каллисто]].
 
(LITERAL)      ( −− x )                            Код периода выполнения для литерала.
Код периода выполнения для [[LITERAL|литерала]].
Код периода выполнения для [[LITERAL|литерала]].


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


== LIT в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
=== 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
Строка 14: Строка 17:


== Реализация ==
== Реализация ==
Литералы в области данных — целые 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) (стр. 53):
   : (LITERAL)  ( ---> A )    I  @  R>  2+  >R  ;
   : (LITERAL)  ( ---> A )    I  @  R>  2+  >R  ;


Слово (LITERAL) в ФОРТ-ЕС было [[примитив]]ом и называлось LIT
Слово (LITERAL) в ФОРТ-ЕС и FORTH ИТЭФ было [[примитив]]ом и называлось LIT


Вот его описание и определение:
Вот его описание и определение из ФОРТ-ЕС:
<PRE>
<PRE>
LIT      *K ->W ПОМЕСТИТЬ НА СТЕК СЛЕДУЮЩИЙ КОД                23
LIT      *K ->W ПОМЕСТИТЬ НА СТЕК СЛЕДУЮЩИЙ КОД                23
Строка 30: Строка 73:
</PRE>
</PRE>


В FORTH ИТЭФ слово (LITERAL) называлось LIT и тоже было [[примитив]]ом:
Вот его определение из FORTH ИТЭФ:
<PRE>
<PRE>
             HEAD    203Q,'LI',324Q,LIT                  ; LIT
             HEAD    203Q,'LI',324Q,LIT                  ; LIT
Строка 48: Строка 91:
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Слова Каллисто без стековых диаграмм]]

Текущая версия от 23:52, 13 ноября 2017

(LITERAL) — служебное слово Каллисто.

(LITERAL)      ( −− x )                             Код периода выполнения для литерала.

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

Ввод слова (LITERAL)[править]

В режиме NUM последовательно нажмите клавиши  ШГ→     Р-ГРД-Г      7   2   ИП   ×   ШГ←        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) содержит два «подпольных» токена LITP и LITB, позволяющие использовать беззнаковые 16- и 8-битные литералы в памяти программ:

 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            ; Специальный байтовый литерал для памяти программ.

Реализации из SP-Forth 4.20:

: TC-LIT,
  S" DUP" TC-FINDOUT INLINE,
  OPT_INIT
  SetOP 0B8 C,  , OPT  \ MOV EAX, #
  OPT_CLOSE ;
: LIT, ( W -> )
  ['] DUP  INLINE,
  OPT_INIT
  SetOP 0B8 C,  , OPT  \ MOV EAX, #
  OPT_CLOSE
;

Советская реализация[править]

У Баранова-Ноздрунова приводится следующее определение слова (LITERAL) (стр. 53):

 : (LITERAL)   ( ---> A )    I  @  R>  2+  >R  ;

Слово (LITERAL) в ФОРТ-ЕС и FORTH ИТЭФ было примитивом и называлось LIT

Вот его описание и определение из ФОРТ-ЕС:

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

Вот его определение из FORTH ИТЭФ:

             HEAD    203Q,'LI',324Q,LIT                   ; LIT
             LODSW
             PUSH  AX
             NEXT

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.