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

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

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

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


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


== История ==
Слово 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:
Строка 18: Строка 13:
           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
Строка 26: Строка 22:
           COMPILE  [ 0 , ]  will copy zero.
           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 не просто само является компилирующим, оно ещё и помогает разрабатывать компилирующие слова.
Слово из стандарта Forth 83. Было исключено из стандарта ANS Forth в пользу слова POSTPONE.
<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 (стр. 140):
  : COMPILE  ?COMP I R> 2+ >R @ , ;
 
У Баранова-Ноздрунова приводится следующее определение слова COMPILE (стр. 54):
  : COMPILE  ( ---> )    I @ ,  R> 2+ >R  ;
 
Описание и определение слова COMPILE в ядре ФОРТ-ЕС:
<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 Л.Броуди «Начальный курс программирования на языке Форт»]




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

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

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