Редактирование: CREATE
Перейти к навигации
Перейти к поиску
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
'''CREATE''' (создать) — стандартное слово [[Каллисто]]. | '''CREATE''' (создать) — стандартное слово [[Каллисто]]. | ||
Формирует слово с именем XXX (заголовок и [[CFA]]), оставляя его поле параметров пустым. При исполнении такое слово кладёт на [[Стек данных|стек]] [[PFA|адрес своего поля данных]]. | |||
== Ввод слова 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. | ||
== | == История == | ||
В 1968 году Чак Мур работал в Mohasco Industries, Inc ([https://en.wikipedia.org/wiki/Amsterdam_%28city%29,_New_York Amsterdam NY], ''англ.''). Первая версия интерпретатора, получившая название FORTH, заработала на миникомпьютере IBM 1130 с графическим дисплеем 2250 (16-битный процессор с ОЗУ 8К, дисководом, клавиатурой, принтером и ридером/панчером перфокарт). Первый FORTH знал слово CREATE под именем ENTER | |||
CREATE создавал классическую [[Словарная статья|словарную статью]]: | |||
ссылка на предыдущую запись | |||
счётчик и 3 символа | |||
код для выполнения | |||
: | параметры | ||
[[Поле кода]] было важной инновацией, так как косвенный переход был единственным накладным расходом, как только слово было найдено. Про ценность счётчика для различения слов Чак Мур узнал от писателей компиляторов из Стэнфорда. | |||
В 1970 году Чак Мур, создатель Форта, называл слова, кладущие на стек значение или адрес своего [[поле данных|поля данных]] «существительными» (''англ.'' noun). | |||
Если CREATE используется, как часть современной конструкции CREATE…[[DOES⟩|DOES>]] — в большинстве случаев при переносе такого определения слова на Каллисто достаточно просто заменить слово CREATE на [[⟨BUILDS|слово <BUILDS]] | |||
== Реализация == | |||
== | |||
Юрий Семёнов приводит следующее определение слова CREATE (стр. 139): | Юрий Семёнов приводит следующее определение слова CREATE (стр. 139): | ||
<PRE> | <PRE> | ||
Строка 237: | Строка 124: | ||
HERE OVER - 2- OVER C! LATEST , CURRENT @ ! | HERE OVER - 2- OVER C! LATEST , CURRENT @ ! | ||
LIT [ CREATE# ] , ; | LIT [ CREATE# ] , ; | ||
</PRE> | </PRE> | ||
== Ссылки == | == Ссылки == | ||
* Слово [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 ''(англ.)'' | ||
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\08.PEREMENNYE,%20KONSTANTY%20I%20MASSIWY ПЕРЕМЕННЫЕ, КОНСТАНТЫ И МАССИВЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | * [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\08.PEREMENNYE,%20KONSTANTY%20I%20MASSIWY ПЕРЕМЕННЫЕ, КОНСТАНТЫ И МАССИВЫ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»] | ||
* [http://www.forth.com/starting-forth/sf8/sf8.html Variables, Constants, and Arrays] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | * [http://www.forth.com/starting-forth/sf8/sf8.html Variables, Constants, and Arrays] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | ||
Строка 262: | Строка 138: | ||
[[Категория:Слова высокого уровня]] | [[Категория:Слова высокого уровня]] | ||
[[Категория:Порождающие слова Каллисто]] | [[Категория:Порождающие слова Каллисто]] | ||
[[Категория: | [[Категория:Слова Каллисто без стековых диаграмм]] | ||