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

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

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

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


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


=== COMPILE в предыдущем стандарте Forth-83 (англ.) ===
=== COMPILE в предыдущем стандарте Forth-83 (англ.) ===
Строка 35: Строка 35:


== Реализация ==
== Реализация ==
Слово 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 (стр. 140):
   : COMPILE  ?COMP I R> 2+ >R @ , ;
   : COMPILE  ?COMP I R> 2+ >R @ , ;
Строка 83: Строка 67:
[[Категория:Слова высокого уровня]]
[[Категория:Слова высокого уровня]]
[[Категория:Работа со словарём Каллисто]]
[[Категория:Работа со словарём Каллисто]]
[[Категория:Компилирующие слова]]
[[Категория:Фортовские слова]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

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

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