Редактирование: CREATE
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''CREATE''' (создать) — стандартное слово [[Каллисто]]. | '''CREATE''' (создать) — стандартное слово [[Каллисто]]. | ||
Формирует слово с именем XXX (заголовок и [[CFA]]), оставляя его поле параметров пустым. | |||
== Ввод слова CREATE == | == Ввод слова CREATE == | ||
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] {{ШГ←}} [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша ×|{{Серая клавиша|×}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша 2|{{Серая клавиша|2}}]] [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] | ||
== Детали реализации == | |||
Создающая часть слова CREATE является высокоуровневой. Для ускорения исполнения создаваемых слов исполняющая часть слова CREATE написана на [[ЯМК|языке МК]]. | |||
== CREATE в стандарте ANS Forth == | == CREATE в стандарте ANS Forth == | ||
6.1.1000 CREATE CORE | 6.1.1000 CREATE CORE | ||
( "<spaces>name" -- ) | ( "<spaces>name" -- ) | ||
Строка 30: | Строка 32: | ||
Типичное использование: | Типичное использование: | ||
... CREATE SOMETHING ... | ... CREATE SOMETHING ... | ||
== CREATE в предыдущем стандарте Forth-83 (англ.) == | |||
CREATE -- M,79 | CREATE -- M,79 | ||
A defining word executed in the form: | A defining word executed in the form: | ||
Строка 62: | Строка 44: | ||
not allocate space in <name>'s parameter field. | not allocate space in <name>'s parameter field. | ||
== CREATE в стандарте Forth-79 (англ.) == | |||
CREATE 239 | CREATE 239 | ||
A defining word used in the form: | A defining word used in the form: | ||
Строка 71: | Строка 53: | ||
field is left on the stack. | field is left on the stack. | ||
== CREATE в fig-FORTH Release 1 glossary, май 1979 (англ.) == | |||
CREATE | CREATE | ||
A defining word used in the form: | A defining word used in the form: | ||
Строка 79: | Строка 61: | ||
parameter field. The new word is created in the CURRENT vocabulary. | parameter field. The new word is created in the CURRENT vocabulary. | ||
== Реализация | == Реализация CREATE == | ||
Юрий Семёнов приводит следующее описание слова CREATE (стр. 139): | |||
Юрий Семёнов приводит следующее | |||
: CREATE FINDN ( поиск слова в словаре) | : CREATE FINDN ( поиск слова в словаре) | ||
IF ( если оно найдено) | IF ( если оно найдено) | ||
Строка 205: | Строка 76: | ||
1+ ALLOT ( выделение нужного числа байт) | 1+ ALLOT ( выделение нужного числа байт) | ||
?ALIGN ( выравнивание выделенного числа байт на | ?ALIGN ( выравнивание выделенного числа байт на | ||
чётную границу, что важно для | чётную границу, что важно для ЭКВМ типа | ||
СМ) | СМ) | ||
↑ | ↑ '240 TOGGLE ( коррекция байта имени) | ||
HERE 1- | HERE 1- '200 TOGGLE ( коррекция последнего байта | ||
имени) | имени) | ||
LAST , ( формирование поля LFA) | LAST , ( формирование поля LFA) | ||
CURRENT @ ! ( коррекция значения CURRENT) | CURRENT @ ! ( коррекция значения CURRENT) | ||
HERE 2+ , ; ( заполнение поля CFA) | HERE 2+ , ; ( заполнение поля CFA) | ||
== История == | |||
Если CREATE используется, как часть конструкции CREATE…[[DOES〉|DOES>]] — в большинстве случаев при переносе такого определения слова на Каллисто достаточно просто заменить [[CREATE]] на [[〈BUILDS|<BUILDS]] | |||
== Ссылки == | == Ссылки == | ||
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1000 CREATE] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1000 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | * Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1000 CREATE] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.1000 комментарий к нему] в стандарте ANS Forth ''(англ.)'' | ||
* Слово [http:// | * Слово [http://www.forth200x.org/documents/html3/core/CREATE.html CREATE] и [http://www.forth200x.org/documents/html3/rationale.html#rat:core:CREATE комментарий к нему] в черновике Forth 200x ''(англ.)'' | ||
Строка 262: | Строка 98: | ||
[[Категория:Слова высокого уровня]] | [[Категория:Слова высокого уровня]] | ||
[[Категория:Порождающие слова Каллисто]] | [[Категория:Порождающие слова Каллисто]] | ||
[[Категория: | [[Категория:Слова Каллисто без стековых диаграмм]] | ||