COMPILE: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 15 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''COMPILE''' (компилировать) — стандартное слово [[Каллисто]].
'''COMPILE''' (компилировать, скомпилировать) — фортовское слово [[Каллисто]]. Скомпилировать [[CFA|токен]].
COMPILE        ( −− )                              Скомпилировать 16−битное слово, следующее за оператором.
Слово COMPILE [[Слово ,|компилирует]] (т.е. добавляет) на вершину словаря 16-битное значение, следующее в [[Шитый код|шитом коде]] непосредственно за [[CFA|токеном]] COMPILE. Обычно это [[CFA|токен]] другого слова.


Компиляция 16-битного слова, следующего за оператором.
== Ввод слова COMPILE ==
 
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
Слово COMPILE компилирует (т.е. добавляет) на вершину словаря значение, находящееся в шитом коде непосредственно за данной ссылкой на статью COMPILE.


== История ==
Слово COMPILE взято в [[Каллисто|Каллисто 1.0]] из стандарта Forth 83, т.к. широко «засветилось» в русской литературе по Форту. Оно было исключено из стандарта ANS Forth в пользу слова POSTPONE, которое планируется к реализации в [[Каллисто 2.0]].


== COMPILE в предыдущем стандарте Forth-83 (англ.) ==
=== COMPILE в предыдущем стандарте Forth-83 (англ.) ===
       COMPILE      --                            C,83
       COMPILE      --                            C,83
           Typically used in the form:
           Typically used in the form:
Строка 15: Строка 18:
           See:  "compilation"
           See:  "compilation"


 
=== COMPILE в стандарте Forth-79 (англ.) ===
== COMPILE в стандарте Forth-79 (англ.) ==
  COMPILE                                      C,146
  COMPILE                                      C,146
     When  a  word containing COMPILE executes,  the  16-bit  value
     When  a  word containing COMPILE executes,  the  16-bit  value
Строка 24: Строка 26:
           COMPILE  [ 0 , ]  will copy zero.
           COMPILE  [ 0 , ]  will copy zero.


 
=== COMPILE в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
== COMPILE в fig-FORTH Release 1 glossary, май 1979 (англ.) ==
  COMPILE                                        C2
  COMPILE                                        C2
         When the word containing COMPILE executes, the execution address of
         When the word containing COMPILE executes, the execution address of
Строка 33: Строка 34:
         interpreter already does).
         interpreter already does).


== Реализация ==
Слово COMPILE не просто само является компилирующим, оно ещё и помогает разрабатывать компилирующие слова.
<pre>
3056 ;#COMPILE
3057 ; COMPILE          ( −− )                              Скомпилировать токен −− пару байт, следующих за COMPILE.
3058 ; Компиляция 16−битного слова, следующего за оператором. Обычно это токен (CFA).
3059 LCOMP:          .DB    7
3060                .TEXT  "COMPILE"
3061                .DW    LQLOAD                  ; ?COMP R> DUP 2+ >R U@ ,
3062 COMP:          .DW CALL, QCOMP, FROMR, DUP,TWOP,TOR, UAT, BRAN,RCOMMA
</pre>
Реализация из SP-Forth 4.20:
<pre>
: COMPILE ' POSTPONE LITERAL POSTPONE COMPILE, ; IMMEDIATE
</pre>


== Реализация COMPILE ==
=== Советская реализация ===
Юрий Семёнов приводит следующее описание слова COMPILE (стр. 140):
Юрий Семёнов приводит следующее определение слова COMPILE (стр. 140):
   : COMPILE  ?COMP I R> 2+ >R @ , ;
   : COMPILE  ?COMP I R> 2+ >R @ , ;


У Баранова-Ноздрунова приводится следующее описание слова COMPILE (стр. 54):
У Баранова-Ноздрунова приводится следующее определение слова COMPILE (стр. 54):
   : COMPILE  ( ---> )    I @ ,  R> 2+ >R  ;
   : COMPILE  ( ---> )    I @ ,  R> 2+ >R  ;


== История ==
Описание и определение слова COMPILE в ядре ФОРТ-ЕС:
Слово из стандарта Forth 83. Было исключено из стандарта ANS Forth в пользу слова POSTPONE.
<PRE>
COMPILE  К-> КОМПИЛИРОВАТЬ СЛЕДУЮЩИЙ АДРЕС                    22
 
                    Экран номер 22
( 31.03.86  FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)
 
: COMPILE ( -> ) R> DUP 2+ >R @ , ;
</PRE>
Определение слова COMPILE в FORTH ИТЭФ:
<PRE>
            HEAD    207Q,'COMPIL',305Q,COMP,$COL        ; COMPILE
  ; Компиляция исполнительного адреса, следующего за оператором
            DW  QCOMP,I,FROMR,TWOP,TOR,AT,COMMA,SEMI
</PRE>
 
== Ссылки ==
* {{Исходник|COMPILE|COMPILE}}
* [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 Л.Броуди «Начальный курс программирования на языке Форт»]




Строка 48: Строка 81:
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Работа со словарём Каллисто]]
[[Категория:Работа со словарём Каллисто]]
[[Категория:Компилирующие слова]]
[[Категория:Фортовские слова]]

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

COMPILE (компилировать, скомпилировать) — фортовское слово Каллисто. Скомпилировать токен.

COMPILE        ( −− )                               Скомпилировать 16−битное слово, следующее за оператором.

Слово COMPILE компилирует (т.е. добавляет) на вершину словаря 16-битное значение, следующее в шитом коде непосредственно за токеном COMPILE. Обычно это токен другого слова.

Ввод слова COMPILE[править]

В режиме ЛАТ последовательно нажмите клавиши  С/П   5   ÷   6   7      ИП 

История[править]

Слово COMPILE взято в Каллисто 1.0 из стандарта Forth 83, т.к. широко «засветилось» в русской литературе по Форту. Оно было исключено из стандарта ANS Forth в пользу слова POSTPONE, которое планируется к реализации в Каллисто 2.0.

COMPILE в предыдущем стандарте Forth-83 (англ.)[править]

     COMPILE      --                            C,83
          Typically used in the form:
                  : <name> ... COMPILE <namex> ... ;
          When <name> is executed, the compilation address compiled
          for <namex> is compiled and not executed.  <name> is
          typically immediate and <namex> is typically not immediate.
          See:  "compilation"

COMPILE в стандарте Forth-79 (англ.)[править]

COMPILE                                      C,146
    When  a  word containing COMPILE executes,  the  16-bit  value
    following   the  compilation  address  of  COMPILE  is  copied
    (compiled) into the dictionary.   i.e.,  COMPILE DUP will copy
    the compilation address of DUP.
         COMPILE  [ 0 , ]   will copy zero.

COMPILE в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

COMPILE                                         C2
       When the word containing COMPILE executes, the execution address of
       the word following COMPILE is copied (compiled) into the dictionary.
       This allows specific compilation situations to be handled in
       addition to simply compiling an execution address (which the
       interpreter already does).

Реализация[править]

Слово COMPILE не просто само является компилирующим, оно ещё и помогает разрабатывать компилирующие слова.

3056 ;#COMPILE
3057 ; COMPILE          ( −− )                               Скомпилировать токен −− пару байт, следующих за COMPILE.
3058 ; Компиляция 16−битного слова, следующего за оператором. Обычно это токен (CFA).
3059 LCOMP:          .DB     7
3060                 .TEXT   "COMPILE"
3061                 .DW     LQLOAD                  ; ?COMP R> DUP 2+ >R U@ ,
3062 COMP:           .DW CALL, QCOMP, FROMR, DUP,TWOP,TOR, UAT, BRAN,RCOMMA

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

: COMPILE ' POSTPONE LITERAL POSTPONE COMPILE, ; IMMEDIATE

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

Юрий Семёнов приводит следующее определение слова COMPILE (стр. 140):

 : COMPILE   ?COMP I R> 2+ >R @ , ;

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

 : COMPILE   ( ---> )    I @ ,  R> 2+ >R  ;

Описание и определение слова COMPILE в ядре ФОРТ-ЕС:

COMPILE   К-> КОМПИЛИРОВАТЬ СЛЕДУЮЩИЙ АДРЕС                     22

                     Экран номер 22
( 31.03.86   FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)

: COMPILE ( -> ) R> DUP 2+ >R @ , ;

Определение слова COMPILE в FORTH ИТЭФ:

             HEAD    207Q,'COMPIL',305Q,COMP,$COL         ; COMPILE
   ; Компиляция исполнительного адреса, следующего за оператором
             DW  QCOMP,I,FROMR,TWOP,TOR,AT,COMMA,SEMI

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


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


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