Редактирование:
DOES⟩
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== История == Впервые слово DOES> появилось под именем ;: в 1971-73 годах, когда Чак Мур перенёс Форт на DEC PDP-11 в [https://en.wikipedia.org/wiki/National_Radio_Astronomy_Observatory National Radio Astronomy Observatory] (''англ.'', [https://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D1%80%D0%BB%D0%BE%D1%82%D1%81%D0%B2%D0%B8%D0%BB%D0%BB_%28%D0%92%D0%B8%D1%80%D0%B3%D0%B8%D0%BD%D0%B8%D1%8F%29 Шарлотсвилл]) и с тех пор оно применяется в подавляющем числе различных реализаций Форта. Как ;CODE , оно определяло класс слов, указывая как интерпретировать описание, когда на слово ссылались. Чак Мур писал, что его было сложно изобрести, но оно оказалось особенно полезным для определения кодов операций. В 1976 году на microFORTH появилась первая версия целевого компилятора. Примерно в это время была реализована улучшенная версия CREATE … DOES> , которая экономила 2 байта на каждом порождённом слове. Эта разработка заняла 3 года. === DOES> в предыдущем стандарте Forth-83 (англ.) === <PRE> DOES> -- addr C,I,83 "does" -- (compiling) Defines the execution-time action of a word created by a high-level defining word. Used in the form: : <namex> ... <create> ... DOES> ... ; and then <namex> <name> where <create> is CREATE or any user defined word which executes CREATE . Marks the termination of the defining part of the defining word <namex> and then begins the definition of the execution-time action for words that will later be defined by <namex>. When <name> is later executed, the address of <name>'s parameter field is placed on the stack and then the sequence of words between DOES> and ; are executed. </PRE> === DOES> в стандарте Forth-79 (англ.) === DOES> I,C,168 "does" Define the run-time action of a word created by a high-level defining word. Used in the form: : <name> ... CREATE ... DOES> ... ; and then <namex> <name> Marks the termination of the defining part of the defining word <name> and begins the defining of the run-time action for words that will later be defined by <name>. On execution of <namex> the sequence of words between DOES> and ; are executed, with the address of <namex>'s parameter field on the stack. === DOES> в fig-FORTH Release 1 glossary, май 1979 (англ.) === DOES> L0 A word which defines the run-time action within a high-level defining word. DOES> alters the code field and first parameter of the new word to execute the sequence of compiled word addresses following DOES>. Used in combination with <BUILDS. When the DOES> part executes it begins with the address of the first parameter of the new word on the stack. This allows interpretation using this area or its contents. Typical uses include the Forth assembler, multidimensional arrays, and compiler generation.
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице