VARIABLE: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Строка 74: Строка 74:


Впервые оно появилось в 1964 году под именем DECLARE в программе CURVE, написанной Чак Муром на Алголе для Burroughs B5500 ([https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F_SLAC Национальная ускорительная лаборатория SLAC], [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%8D%D0%BD%D1%84%D0%BE%D1%80%D0%B4%D1%81%D0%BA%D0%B8%D0%B9_%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82 Стэнфордский университет]). Совместно с VARIABLE работал оператор [[Слово !|!]], но считывание ([[Слово @|@]]) было автоматическим.
Впервые оно появилось в 1964 году под именем DECLARE в программе CURVE, написанной Чак Муром на Алголе для Burroughs B5500 ([https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F_SLAC Национальная ускорительная лаборатория SLAC], [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%8D%D0%BD%D1%84%D0%BE%D1%80%D0%B4%D1%81%D0%BA%D0%B8%D0%B9_%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82 Стэнфордский университет]). Совместно с VARIABLE работал оператор [[Слово !|!]], но считывание ([[Слово @|@]]) было автоматическим.
В MMSFORTH было слово CVARIABLE для определения переменных размером в байт.


Начиная с Форта-79, определение целочисленной переменной VARIABLE не требует задания начального значения и не меняет [[Стек данных|стек]].
Начиная с Форта-79, определение целочисленной переменной VARIABLE не требует задания начального значения и не меняет [[Стек данных|стек]].

Версия от 07:36, 21 марта 2016

Пример работы слова VARIABLE

VARIABLE (переменная) — стандартное порождающее слово Каллисто.

Определить следующее слово как 16-битную переменную с начальным значением нуль.

Слово VARIABLE оставлено для совместимости с Фортом. Вместо него при программировании на Каллисто рекомендуется использовать более современное и мощное слово VALUE.

Ввод слова VARIABLE

В режиме ЛАТ последовательно нажмите клавиши     ШГ←   ×   7   ШГ←   В/О      ИП 

VARIABLE в стандарте ANS Forth

6.1.2410   VARIABLE                                                        CORE
           ( "<spaces>name" -- )
           Пропускает ведущие разделители пробелы. Выделяет name, ограниченное 
           пробелом. Создает определение для name с семантикой выполнения, 
           определенной ниже. Резервирует одну ячейку области данных в 
           выровненном адресе.
           name объявляется как "variable".
       name Выполнение: ( -- a-addr )
           a-addr - адрес зарезервированной ячейки. Программа ответственна за 
           инициализацию и содержание зарезервированной ячейки.
       См.: 3.4.1 Синтаксический анализ.
A.6.1.2410   VARIABLE
Типичное использование:
       ... VARIABLE XYZ ...


VARIABLE в предыдущем стандарте Forth-83 (англ.)

     VARIABLE     --                            M,79
          A defining word executed in the form:
                  VARIABLE <name>
          A dictionary entry for <name> is created and two bytes are
          ALLOTted in its parameter field.  This parameter field is to
          be used for contents of the variable.  The application is
          responsible for initializing the contents of the variable
          which it creates.  When <name> is later executed, the
          address of its parameter field is placed on the stack.


VARIABLE в стандарте Forth-79 (англ.)

VARIABLE                                     227
    A defining word executed in the form:
         VARIABLE  <name>
    to  create a dictionary entry for <name> and allot  two  bytes
    for  storage  in the parameter field.   The  application  must
    initialize  the stored value.   When <name> is later executed,
    it will place the storage address on the stack.


VARIABLE в fig-FORTH Release 1 glossary, май 1979 (англ.)

VARIABLE                                     E,LU
       A defining word used in the form:
                         n VARIABLE cccc
       When VARIABLE is executed, it creates the definition cccc with its
       parameter field initialized to n. When cccc is later executed, the
       address of its parameter field (containing n) is left on the stack,
       so that a fetch or store may access this location.

Реализация VARIABLE

У Баранова-Ноздрунова приводятся два следующих описания слова VARIABLE (стр. 24):

 : VARIABLE   ( ---> )    CREATE 2 ALLOT ;
 : VARIABLE   ( ---> )    CREATE 0 , ;

Второе описание также используется в 11-й главе Starting FORTH (англ.):

  : VARIABLE  CREATE  0 , ;

История

В Форте слово VARIABLE — одно из самых древних и устоявшихся.

Впервые оно появилось в 1964 году под именем DECLARE в программе CURVE, написанной Чак Муром на Алголе для Burroughs B5500 (Национальная ускорительная лаборатория SLAC, Стэнфордский университет). Совместно с VARIABLE работал оператор !, но считывание (@) было автоматическим.

В MMSFORTH было слово CVARIABLE для определения переменных размером в байт.

Начиная с Форта-79, определение целочисленной переменной VARIABLE не требует задания начального значения и не меняет стек.

Каллисто и большинство версий Форта записывают в созданную переменную ноль, но если вам важна совместимость с Фортом, полагаться на эту особенность не следует.

Ссылки


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.