Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''COMPILE''' (компилировать, скомпилировать) — фортовское слово [[Каллисто]]. Скомпилировать [[CFA|токен]]. | | '''COMPILE''' — стандартное слово [[Каллисто]]. |
| COMPILE ( −− ) Скомпилировать 16−битное слово, следующее за оператором.
| | |
| Слово COMPILE [[Слово ,|компилирует]] (т.е. добавляет) на вершину словаря 16-битное значение, следующее в [[Шитый код|шитом коде]] непосредственно за [[CFA|токеном]] COMPILE. Обычно это [[CFA|токен]] другого слова.
| | Компиляция 16-битного слова, следующего за оператором. |
|
| |
|
| == Ввод слова COMPILE ==
| |
| В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]]
| |
|
| |
|
| == История == | | == История == |
| Слово COMPILE взято в [[Каллисто|Каллисто 1.0]] из стандарта Forth 83, т.к. широко «засветилось» в русской литературе по Форту. Оно было исключено из стандарта ANS Forth в пользу слова POSTPONE, которое планируется к реализации в [[Каллисто 2.0]]. | | Слово из стандарта Forth 83. Было исключено из стандарта ANS Forth в пользу слова POSTPONE. |
| | |
| === 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 не просто само является компилирующим, оно ещё и помогает разрабатывать компилирующие слова.
| |
| <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: |
Строка 11: |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Слова высокого уровня]]
| |
| [[Категория:Работа со словарём Каллисто]] | | [[Категория:Работа со словарём Каллисто]] |
| [[Категория:Компилирующие слова]]
| |
| [[Категория:Фортовские слова]]
| |